opencv中的Hough变换失败
这是上面的一张照片。我正在使用opencv来处理它,我尝试使用Hough变换,但失败了。此外,我发现在Hough变换中设置相关参数非常困难 代码如下:opencv中的Hough变换失败,opencv,image-processing,Opencv,Image Processing,这是上面的一张照片。我正在使用opencv来处理它,我尝试使用Hough变换,但失败了。此外,我发现在Hough变换中设置相关参数非常困难 代码如下: #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main() { Mat srcImg = imread("srccenter.bmp"); Mat greyImg; cvtColor(srcImg, gr
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat srcImg = imread("srccenter.bmp");
Mat greyImg;
cvtColor(srcImg, greyImg, COLOR_BGR2GRAY);
std::vector<cv::Vec3f> circles;
/// Apply the Hough Transform to find the circles
HoughCircles(greyImg, circles, CV_HOUGH_GRADIENT, 1, 10, 100, 20, 0, 0);
/// Draw the circles detected
for (size_t i = 0; i < circles.size(); i++)
{
Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
int radius = cvRound(circles[i][2]);
circle(srcImg, center, 3, Scalar(0, 255, 255), -1);
circle(srcImg, center, radius, Scalar(0, 255, 0), 1);
}
namedWindow("srcImg", WINDOW_NORMAL);
imshow("srcImg", srcImg);
waitKey(0);
return 0;
}
#包括
使用名称空间cv;
使用名称空间std;
int main()
{
Mat srcImg=imread(“srccenter.bmp”);
Mat greyImg;
CVT颜色(srcImg,灰色,颜色为灰色);
std::向量圆;
///应用Hough变换查找圆
霍夫圆(灰度、圆、CV_-HOUGH_梯度、1、10、100、20、0、0);
///画出检测到的圆
对于(size_t i=0;i
但结果是我检测不到任何圆
我怎样才能发现内圈
您有什么好主意吗?您需要将最小距离参数更改为零。此参数用于检测到的中心之间的最小距离。在你们的例子中,圆心很近。
另外,你必须改变Canny边缘检测器的参数PARAMY1。你有没有考虑过谷歌“圆检测OpenCV”?来吧甚至有一个官方教程,我已经把我的代码,请看看为什么你的最小和最大半径为0?确保您了解参数的作用,并将半径限制在您期望的内圈范围内。主要是,我想检测图片中的所有圆,因此我没有设置限制雾半径。但即便如此,任何一个圆都被检测到了。现在的问题是我无法检测到任何一个圆,更不用说内圈了@你的建议很有用。正如你所说,我多次更改了相关参数,最终对这些参数有所了解。@zahra-rah