在python中使用drawContours OpenCV函数

Man*_*uel 9 python opencv

我已经安装了OpenCV 2.2,当我尝试使用drawContours时,我收到以下错误:

cv.drawContours(frame, contours, 0, cv.RGB(255, 0, 0))
TypeError: <unknown> is not a numpy array
Run Code Online (Sandbox Code Playgroud)

与此错误相关的代码如下:

storage = cv.CreateMemStorage(0)
contours = cv.FindContours (color_mask, storage, method = cv.CV_CHAIN_APPROX_SIMPLE)
cv.drawContours(frame, contours, 0, cv.RGB(255, 0, 0))
Run Code Online (Sandbox Code Playgroud)

python文档与参数的正确顺序不对应(感谢IDLE我知道正确的顺序),这个函数的C++文档对我没什么帮助

这是完整的代码(相关代码):

    cv.NamedWindow("MyWindow", 1)
    capture = cv.CaptureFromCAM(0)

    while 1:
        frame = cv.QueryFrame(capture)

        color_mask = cv.CreateImage(cv.GetSize(frame), 8, 1)

        cv.InRangeS(frame, cv.Scalar(*min_color), cv.Scalar(*max_color), color_mask)

        cv.CvtColor(frame, frame, cv.CV_BGR2HSV)

        storage = cv.CreateMemStorage(0)
        contours = cv.FindContours (color_mask, storage, method = cv.CV_CHAIN_APPROX_SIMPLE)
        cv.drawContours(image = frame, contours = contours, contourIdx = 0, color = cv.RGB(255, 0, 0))

        cv.ShowImage("MyWindow", frame)
Run Code Online (Sandbox Code Playgroud)

提前致谢

小智 6

您应该知道drawContours和DrawContours是两个不同的功能.他们实际上做同样的事情,但他们接受不同的参数.我相信第一个只接受numpy数组而不是CvMat或openCV的其他数组.