【问题标题】:Getting Runtime error in opencv due to houghCircles()由于 houghCircles() 在 opencv 中出现运行时错误
【发布时间】:2017-05-16 16:15:13
【问题描述】:

由于我是 opencv 新手,我一直在尝试从我的相机中检测圆形区域。 而且,我完全按照文档中的内容复制了代码,但它仍然总是给出运行时错误。 " cv::circle、文件 C:\build\master_winpack-build-win64-vc14\opencv\modules\imgproc\ 中的断言失败(半径 >= 0 && 厚度

我的代码有点像:

    int main() {
Mat image;      //matrice for original image
Mat image_hsv;  //matrice for hsv image
Mat image_gray;
Mat red_hue_image;   //matrice for binary image
VideoCapture cap;
int camOpen = cap.open(CV_CAP_ANY);

vector<Vec3f> circles;

while (true) {
cap >> image;          //intake the input of camera
if(!image.empty())    //check if camera is working
{
    imshow("window", image);            //showing of image
    cvtColor(image,image_hsv,CV_RGB2HSV);        // conversion of rgbimage to hsv
    cvtColor(image,image_gray,CV_RGB2GRAY);
    GaussianBlur(image_hsv,image_hsv,Size(9,9),2,2);
    imshow("hsv",image_hsv);                    //showing of hsv image      
    imshow("gray",image_gray);
    inRange(image_hsv,Scalar(110,100,100),Scalar(130,255,255),red_hue_image);           //binary-ing for red color to be white, all others black    
    imshow("processed image",red_hue_image);
    ///////////////////////////////////////////////////

    HoughCircles(image_gray,circles,CV_HOUGH_GRADIENT,1.0,image_gray.rows/8,100,100,0,1000);
    for(size_t i=0; i<circles.size();i++)
    {
        Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
     int radius = cvRound(circles[i][2]);
     // draw the circle center
     circle( image_gray, center, 3, Scalar(0,255,0), -1, 8, 0 );
     // draw the circle outline
     circle( image_gray, center, radius, Scalar(0,0,255), 3, 8, 0 );

     Vec3i c = circles[i];
     circle( image, Point(c[0], c[1]), c[2], Scalar(0,0,255), 3, LINE_AA);
    circle( image, Point(c[0], c[1]), 2, Scalar(0,255,0), 3, LINE_AA);
    }
    imshow("circles", image);
}

// 延迟 33ms if(waitKey(5)==27){

break;
}
}
return 0;

}

如果我删除 houghcircle 线,我不会收到任何运行时错误,我可以看到我的相机打开了。 但是有了这条线,程序就会崩溃。 请问,有人可以帮我吗?

【问题讨论】:

    标签: opencv runtime-error hough-transform


    【解决方案1】:

    这个函数

    HoughCircles(image_gray,circles,CV_HOUGH_GRADIENT,1.0,image_gray.rows/8,100,100,0,1000);
    

    特别是最后两个参数...最小半径和最大半径,

    尝试使用较小的值,例如:

    HoughCircles(image_gray,circles,CV_HOUGH_GRADIENT,1.0,image_gray.rows/8,100,20,0,0);
    

    【讨论】:

    • 我也试过了,但是如果我删除参数中的圆圈并添加,让我们再说一遍 image_gray(我知道,它在逻辑上是错误的),它不会给出任何运行时错误。所以我认为,错误是因为圈子来的。但正如我所说,我是新手,所以我没有太多想法。感谢您的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2013-01-14
    相关资源
    最近更新 更多