在opencv中使用convexhull函数

时间:2016-12-17 03:05:17

标签: python opencv

我正在尝试在我的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()

1 个答案:

答案 0 :(得分:0)

根据我的代码猜测,您似乎正在使用Opencv3.1,其中cv2.findContours()的返回值已更改为:ret_image, contours, hierarchy,而不是您假设它是:contours,hierarchy,ret2所以基本上返回的元组中的第二个值包含轮廓列表。

但是,在之前的OpenCV版本cv2.findContours()中只返回了2个值:contours, hierarchy,因此命名约定的细微变化对您有用。