我正在尝试使用 Iphone 检测带有 openCV 的彩色球体。对于第一个测试用例,我使用了一个带有给定代码的黄色大理石:
cv::Mat thresholdHSV;
cv::Mat imgHSV;
cv::cvtColor(inputFrame, imgHSV, CV_BGR2HSV);
cv::inRange(imgHSV,cv::Scalar(20,100,100),cv::Scalar(30,255,255),thresholdHSV);
std::vector<std::vector<cv::Point> > contours;
findContours(thresholdHSV.clone(), contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
//Draw them
cv::Mat destinationSource = cv::Mat::zeros(inputFrame.size(), inputFrame.type());
drawContours(destinationSource, contours, -1, cv::Scalar(255,255,255), CV_FILLED);
这给了我已经很好的结果:
但是我需要以某种方式检测圆形。理想情况下,我想应用 HoughCircle,但是我收到 OpenCv 错误:“参数错误(源图像必须是 8 位单通道)。
我也试过申请
HoughCircles(thresholdHSV, detectedCircles, CV_HOUGH_GRADIENT, 1, thresholdHSV.rows / 8, 200, 100, 0, 0);
但我根本没有得到任何结果。
如何在destinationSource 图像上应用HoughCircle,或者有没有其他方法可以检测圆形?(我还必须考虑何时有更多相同颜色的球体彼此非常接近,因为 findContours 只会找到一个计数)
任何帮助都非常感谢,并感谢您的时间。