Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HoughCircles()圆检测的正确阈值opencv c++; 我想用C++中的OpenCV来检测图像中的圆。我尝试了dp、parm1和parm2的各种阈值,但找不到正确的阈值_C++_Opencv - Fatal编程技术网

HoughCircles()圆检测的正确阈值opencv c++; 我想用C++中的OpenCV来检测图像中的圆。我尝试了dp、parm1和parm2的各种阈值,但找不到正确的阈值

HoughCircles()圆检测的正确阈值opencv c++; 我想用C++中的OpenCV来检测图像中的圆。我尝试了dp、parm1和parm2的各种阈值,但找不到正确的阈值,c++,opencv,C++,Opencv,圆的半径约为40像素。 我添加了一个指向示例图像的链接。我需要在HoughCircles()中使用哪些值才能获得正确的结果 链接到示例。您可以使用以下参数值。这些设置可以检测图像中的圆圈 cv::Mat img = cv::imread("75.bmp"); cv::Mat img_gray; cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY); img_gray.convertTo(img_gray, CV_8UC1); std:

圆的半径约为40像素。 我添加了一个指向示例图像的链接。我需要在HoughCircles()中使用哪些值才能获得正确的结果


链接到示例。

您可以使用以下参数值。这些设置可以检测图像中的圆圈

cv::Mat img = cv::imread("75.bmp");
cv::Mat img_gray;
cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY);
img_gray.convertTo(img_gray, CV_8UC1);
std::vector<cv::Vec3f> circles;
double minDist = 20;
double dp = 1;
double param1 = 200;
double param2 = 10;
int minRadius = 15;
int maxRadius = 25;
cv::HoughCircles(img_gray, circles, cv::HOUGH_GRADIENT, dp, minDist, param1, param2, minRadius, maxRadius);
if (circles.size() > 0) {
    for (size_t current_circle = 0; current_circle < circles.size(); ++current_circle) {
        cv::Point center(std::round(circles[current_circle][0]), std::round(circles[current_circle][1]));
        int radius = std::round(circles[current_circle][2]);
        cv::circle(img, center, radius, cv::Scalar(0, 255, 0), 1);
    }
}
cv::Mat img=cv::imread(“75.bmp”);
cv::Mat img_gray;
cv::CVT颜色(img、img_灰色、cv::颜色_BGR2灰色);
img_gray.convertTo(img_gray,CV_8UC1);
std::向量圆;
双重正念者=20;
双dp=1;
双参数1=200;
双参数2=10;
int minRadius=15;
int最大半径=25;
cv::HoughCircles(img_gray,圆圈,cv::HOUGH_渐变,dp,Minist,param1,param2,minRadius,maxRadius);
如果(圆圈.size()>0){
用于(大小为当前圆=0;当前圆<圆。大小();+当前圆){
cv::点中心(标准::圆(圆[当前圆][0]),标准::圆(圆[当前圆][1]);
int radius=std::round(圆[current_circle][2]);
cv::圆(img,中心,半径,cv::标量(0,255,0),1);
}
}

我也许应该看看这个函数()的文档,其中详细解释了如何选择函数参数。谢谢,我已经看过了,但我不清楚parm1 parm2和dp在做什么。所以我尝试了不同的值,但对我的示例图像不起作用。您有没有建议我需要使用哪个值,以便在所有样本图像中检测圆?