繁体   English   中英

OpenCV Python HoughCircles错误

[英]OpenCV Python HoughCircles error

我正在研究一种能够检测图像中圆形形状的程序。 我决定Hough变换是最好的,我在OpenCV库中找到了一个。 问题是,当我尝试使用它时,我得到一个错误,我不知道如何解决。 OpenCV for Python没有完全实现吗? 我需要该程序才能使用该库吗?

这是代码:

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错误:未知函数中的空pinter(),文件.. \\ .. \\ .. \\ .. \\ ocv \\ openc \\ src \\ cxcore \\ cxdatastructs.cpp,第408行Traceback(最近一次调用最后一次):文件“ellipse- detect-webcam.py“,第20行,in cv.HoughCircles(edge,storage,cv.CV_HOUGH_GRADIENT,2,gray.height / 4,200,100)cv.error

在此先感谢您的帮助。

对于它的价值,我发现如果cv.HoughCircles无法检测到图像中的圆形形状而不是优雅地返回空列表, cv.HoughCircles中止。

图像有效吗?
你能展示它们(原版和灰度)

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

存储必须更大,我认为cvMat不是dinamically分配,所以你必须更改行:

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

至:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM