我试图使用OpenCV / C ++检测移动的圆圈。我的代码:
m_capture >> imageRGB;
cv::cvtColor(imageRGB, imgageGray, cv::COLOR_RGB2GRAY);
cv::Scalar mu;
cv::Scalar sigma;
cv::meanStdDev(imgageGray, mu, sigma);
cv::Mat imageCanny;
cv::Canny(imgageGray,
imageCanny,
mu.val[0] + sigma.val[0],
mu.val[0] - sigma.val[0]);
std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours(imageCanny, contours, hierarchy,CV_RETR_TREE, CV_CHAIN_APPROX_NONE);
在此之后我检查是否有任何圆圈并且是正确的圆圈。 如果圆圈没有移动或移动缓慢,那没关系。 http://i.imgur.com/UNbgdql.jpg
但如果圈子移动得更快,那就变得无法察觉了。 http://i.imgur.com/GqiiwKH.jpg
那么,有人可以给我建议如何更好地检测移动圆圈吗? UPD: 我的相机是罗技c920。
答案 0 :(得分:0)
你可以在找到canny之前使用bilateralFilter,这可以稍微改善检测的性能,因为它有助于保持边缘更清晰。