0

我正在使用 OpenCV 分析网络摄像头拍摄的照片。然后我裁剪,并将图像转换为仅黑白。然后我想找到图像中的所有轮廓,并确定最大的轮廓。

我在 Ubuntu 操作系统的终端窗口中运行代码

以下是相关代码:

num_contours, contours = cvFindContours(contourimg, # num_contours - # of contours
                          cvCreateMemStorage(0),    # and contours are the actual contours
                          sizeof_CvContour)         # cvFindContours() destroys contourimg

max_size = float("-inf")
max_contour = None

for contour in contours.hrange():           # contours.hrange() returns a list of all contours
    print contour
    size = abs(cvContourArea(contour))      # calculates the area of the bounding rectangle
    if size > max_size:                             
        max_size = size                     # update max_size if larger contour found
        max_contour = contour               # update max_contour if larger contour found

当我运行代码时,我得到不同的错误。一个是分段错误,退出 python 并返回到终端,但另一个是:

 File "fitness.py", line 74, in boundingimg
size = abs(cvContourArea(contour))      # calculates the area of the bounding rectangle
File "/usr/lib/pymodules/python2.6/opencv/cv.py", line 6741, in cvContourArea
return _cv.cvContourArea(*args)

RuntimeError:  openCV Error:
    Status=Bad argument
    function name=cvPointSeqFromMat
    error message=Input array is not a valid matrix
    file_name=/build/buildd/opencv-2.1.0/src/cv/cvutils.cpp
    line=53

我发现这很奇怪,因为我有一个所有轮廓的打印语句,它们都工作正常,for 循环在抛出这个错误之前持续了很长时间。我不确定这个轮廓与所有其他轮廓有什么不同。

此外,有时(不经常)代码有效,因此错误不会每次都发生。

4

0 回答 0