使用 Raspberry pi 3、OpenCV 和 Python 的运动跟踪器
Motion tracker using Raspberry pi 3, OpenCV and Python
错误告诉我“要解压的值太多”。
此代码是为 OpenCV 2.0 编写的,但是我使用的是 OpenCV3.1.
我是遇到了反向兼容性问题,还是更微不足道的问题?
行
contours, hierarchy = cv2.findContours(thresholdimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
给出的错误为 cv2.findContours returns 3 个值,但您将它们分配给两个变量。
所以,正确的代码是
-,contours, hierarchy = cv2.findContours(thresholdimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
假设您不想要第一个返回值。
cv2.findContours 文档:
http://docs.opencv.org/3.1.0/d4/d73/tutorial_py_contours_begin.html
我已将此代码更新为 运行 下的 opencv2 和下面每个代码片段 3 个。我没有测试 opencv3,而是尝试 except 并在出现错误时使用替代语法。这工作正常,但由于必须不断执行检查,可能会稍微减慢代码速度。这是适应代码差异的代价。我还考虑过放入一个布尔变量来指示代码在 opencv2 或 3 下是否为 运行ning,但代码仍需要检查布尔值的语法是否正确。下面的代码无需用户干预即可进行调整。
differenceimage = cv2.absdiff(grayimage1, grayimage2)
differenceimage = cv2.blur(differenceimage,(BLUR_SIZE,BLUR_SIZE))
# Get threshold of difference image based on THRESHOLD_SENSITIVITY variable
retval, thresholdimage = cv2.threshold( differenceimage, THRESHOLD_SENSITIVITY, 255, cv2.THRESH_BINARY )
try:
thresholdimage, contours, hierarchy = cv2.findContours( thresholdimage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE )
except:
contours, hierarchy = cv2.findContours( thresholdimage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE )
错误告诉我“要解压的值太多”。
此代码是为 OpenCV 2.0 编写的,但是我使用的是 OpenCV3.1.
我是遇到了反向兼容性问题,还是更微不足道的问题?
行
contours, hierarchy = cv2.findContours(thresholdimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
给出的错误为 cv2.findContours returns 3 个值,但您将它们分配给两个变量。
所以,正确的代码是
-,contours, hierarchy = cv2.findContours(thresholdimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
假设您不想要第一个返回值。
cv2.findContours 文档: http://docs.opencv.org/3.1.0/d4/d73/tutorial_py_contours_begin.html
我已将此代码更新为 运行 下的 opencv2 和下面每个代码片段 3 个。我没有测试 opencv3,而是尝试 except 并在出现错误时使用替代语法。这工作正常,但由于必须不断执行检查,可能会稍微减慢代码速度。这是适应代码差异的代价。我还考虑过放入一个布尔变量来指示代码在 opencv2 或 3 下是否为 运行ning,但代码仍需要检查布尔值的语法是否正确。下面的代码无需用户干预即可进行调整。
differenceimage = cv2.absdiff(grayimage1, grayimage2)
differenceimage = cv2.blur(differenceimage,(BLUR_SIZE,BLUR_SIZE))
# Get threshold of difference image based on THRESHOLD_SENSITIVITY variable
retval, thresholdimage = cv2.threshold( differenceimage, THRESHOLD_SENSITIVITY, 255, cv2.THRESH_BINARY )
try:
thresholdimage, contours, hierarchy = cv2.findContours( thresholdimage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE )
except:
contours, hierarchy = cv2.findContours( thresholdimage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE )