【问题标题】:OpenCV Python HoughCircles errorOpenCV Python HoughCircles错误
【发布时间】:2010-05-29 00:38:08
【问题描述】:

我正在开发一个检测图像中圆形形状的程序。我认为霍夫变换是最好的,我在 OpenCV 库中找到了一个。问题是当我尝试使用它时,我得到一个我不知道如何修复的错误。 Python 的 OpenCV 是否没有完全实现?是否有修复程序运行所需的库?

代码如下:

import cv

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

while True:
    img = cv.QueryFrame(capture)
    gray = cv.CreateImage(cv.GetSize(img), 8, 1)
    edges = cv.CreateImage(cv.GetSize(img), 8, 1)

    cv.CvtColor(img, gray, cv.CV_BGR2GRAY)
    cv.Canny(gray, edges, 50, 200, 3)
    cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)

    storage = cv.CreateMat(1, 2, cv.CV_32FC3)

    #This is the line that throws the error
    cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)

    #cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
         break

这是我得到的错误:

OpenCV错误:未知函数中的空指针(), 文件 ..\..\..\..\ocv\openc\src\cxcore\cxdatastructs.cpp,第 408 行 回溯(最近一次通话最后): 文件“ellipse-detect-webcam.py”,第 20 行,在 cv.HoughCircles(边缘、存储、cv.CV_HOUGH_GRADIENT、2、gray.height/4、200、100) 简历错误

提前感谢您的帮助。

【问题讨论】:

    标签: python opencv hough-transform


    【解决方案1】:

    不管怎样,我发现如果cv.HoughCircles 无法检测到图像中的圆形,它就会中止,而不是优雅地返回一个空列表。

    【讨论】:

      【解决方案2】:

      图片是否有效?
      能不能展示一下(原图和灰度图)

      否则你确定函数的参数是正确的吗?你是否正确传递了指针或引用

      【讨论】:

      【解决方案3】:

      存储必须更大,我认为 cvMat 不是动态分配的,因此您必须例如更改行:

      storage = cv.CreateMat(1, 2, cv.CV_32FC3)
      

      到:

      storage = cv.CreateMat(1, img.rows * img.cols, cv.CV_32FC3)
      

      【讨论】:

      • 不,storage 实际上是存储圈子列表的位置。所以cv.CreateMat(1, max_circles, cv.CV_32FC3) 是正确的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      相关资源
      最近更新 更多