【发布时间】:2017-07-01 13:41:37
【问题描述】:
我有一个非常基本的代码,它使用 openCV 中的标准化 HoughCircles 命令来检测圆。但是,我的问题是我的数据(图像)是使用一种算法(出于数据模拟的目的)生成的,该算法在 r 的 +-15%(随机在此范围内)范围内绘制一个点(其中 r 是半径圆,它是随机生成的,介于 5 和 10 之间(实数)),并使用圆方程进行 360 度。 (附上示例图片)。 http://imgur.com/a/iIZ1N 现在使用霍夫圆命令,我能够通过手动播放参数来检测半径大致相同的圆(通过设置轨迹栏,灵感来自相同性质的 github 代码),但我想自动化这个过程我有超过 1000 张图像,我想一遍又一遍地这样做。有没有更好的方法来做到这一点?或者,如果有人有任何建议,我将非常感谢他们,因为我是图像处理领域的初学者,并且有物理背景而不是 CS 背景。 我的代码的粗略示例(下面没有轨迹栏等):
Mat img = imread("C:\\Users\\walee\\Documents\\MATLAB\\plot_2 .jpeg", 0);
Mat cimg,copy;
copy = img;
medianBlur(img, img, 5);
GaussianBlur(img, img, Size(1, 5), 1.1, 0);
cvtColor(img, cimg, COLOR_GRAY2BGR);
vector<Vec3f> circles;
HoughCircles(img, circles, HOUGH_GRADIENT,1, 10, 94, 57, 120, 250);
for (size_t i = 0; i < circles.size(); i++)
{
Vec3i c = circles[i];
circle(cimg, Point(c[0], c[1]), c[2], Scalar(0, 0, 255), 1, LINE_AA);
circle(cimg, Point(c[0], c[1]), 2, Scalar(0, 255, 0), 1, LINE_AA);
}
imshow("detected circles", cimg);
waitKey();
return 0;
【问题讨论】:
标签: opencv image-processing feature-detection hough-transform