在Win10 C ++通用应用程序中使用OpenCV检测圆圈

时间:2016-05-03 15:06:04

标签: c++ opencv

我在Win10 Universal App(C ++)中检测圈子时遇到了一些问题。 我需要检测以下图像中的蓝色圆圈:

enter image description here

因此我使用OpenCV并使用以下代码:

    Mat img_image = imread("template_rund.png");
    Mat img_hsv;
    Mat img_result;
    Mat img_blue;
    Mat img_canny;

    cvtColor(img_image, img_image, CV_BGR2BGRA);
    cv::cvtColor(img_image, img_hsv, cv::COLOR_BGR2HSV);
    cv::inRange(img_hsv, cv::Scalar(100, 50, 0), cv::Scalar(140, 255, 255), img_blue);
    cv::Canny(img_blue, img_canny, 300, 350);
    std::vector<cv::Vec3f> circles;
    GaussianBlur(img_canny, img_canny, cv::Size(9, 9), 2, 2);
    cv::HoughCircles(img_canny, circles, CV_HOUGH_GRADIENT, 2, 5, 1000, 1000, 0, 1000);

    for (size_t current_circle = 0; current_circle < circles.size(); ++current_circle) {
        ...
    }

该算法正常运行,直到HoughCircles调用。 在圆圈内部 - 矢量应该存储所有找到的圆圈。 但是矢量的大小总是大约1537228453755672812

在那点我觉得改变HoughCircles-Call的参数是个好主意。如果我将最小/最大半径更改为10/100,算法仍然可以找到大约1517229 ...圈子。

可能是什么问题?

进一步信息:

我自己为Windows编译了OCV-Libraries: https://msopentech.com/blog/2015/05/15/uap-in-action-running-opencv-on-raspberry-pi-ii/#

0 个答案:

没有答案