我正在尝试在我的python项目中实现Convexhull但是我收到了错误
Traceback (most recent call last): File "contourfeaturestest.py", line 22, in <module>
hull2 = cv2.convexHull(cnt)
cv2.error:convhull.cpp:134: error: (-215) total >= 0 && (depth == CV_32F || depth == CV_32S) in function convexHull
我正在尝试使用带有来自计算机摄像机的帧的凸壳,我不确定为什么我的代码会产生上述错误。
我的代码如下。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
ret1,thresh = cv2.threshold(gray,127,255,0)
contours,hierarchy,ret2= cv2.findContours(thresh, 1, 2)
cnt = contours[0]
hull2 = cv2.convexHull(cnt)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
答案 0 :(得分:0)
根据我的代码猜测,您似乎正在使用Opencv3.1
,其中cv2.findContours()
的返回值已更改为:ret_image, contours, hierarchy
,而不是您假设它是:contours,hierarchy,ret2
所以基本上返回的元组中的第二个值包含轮廓列表。
但是,在之前的OpenCV版本cv2.findContours()
中只返回了2个值:contours, hierarchy
,因此命名约定的细微变化对您有用。