我在Win10 Universal App(C ++)中检测圈子时遇到了一些问题。 我需要检测以下图像中的蓝色圆圈:
因此我使用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/#