gpt4 book ai didi

c++ - opencv houghcircles 差异 c c++

转载 作者:行者123 更新时间:2023-11-30 17:34:09 30 4
gpt4 key购买 nike

我在 OpenCV 中介绍自己(为了大学的一个软件项目),并发现了一个 tutorial用于我进行调整和测试的色环检测。它是用 OpenCV 1 用 C 语言编写的。所以我尝试将其转换为 OpenCv 2 类 API,一切都很好,但我遇到了一个问题:
C 函数 cvHoughCircles 生成的结果与 C++ 函数 HoughCircles 不同。
C版本找到了我的测试圈,误报率较低,但C++版本的错误率明显较高。

//My C implementation
IplImage *img = cvQueryFrame( capture );

CvSize size = cvGetSize(img);
IplImage *hsv = cvCreateImage(size, IPL_DEPTH_8U, 3);
cvCvtColor(img, hsv, CV_BGR2HSV);

CvMat *mask = cvCreateMat(size.height, size.width, CV_8UC1);
cvInRangeS(hsv, cvScalar(107, 61, 0, 0), cvScalar(134, 255, 255, 0), mask);

/* Copy mask into a grayscale image */
IplImage *hough_in = cvCreateImage(size, 8, 1);
cvCopy(mask, hough_in, NULL);
cvSmooth(hough_in, hough_in, CV_GAUSSIAN, 15, 15, 0, 0);
cvShowImage("mask",hough_in);
/* Run the Hough function */
CvMemStorage *storage = cvCreateMemStorage(0);
CvSeq *circles = cvHoughCircles(hough_in, storage, CV_HOUGH_GRADIENT,
4, size.height/4, 100, 40, 0, 0);
// ... iterating over all found circles

这个效果很好

   //My C++ implementation
cv::Mat img;
cap.read(img);

cv::Size size(img.cols,img.rows);
cv::Mat hsv(size, IPL_DEPTH_8U, 3);
cv::cvtColor(img, hsv, CV_BGR2HSV);

cv::Mat mask(size.height, size.width, CV_8UC1);
cv::inRange(hsv, cv::Scalar(107, 61, 0, 0), cv::Scalar(134, 255, 255, 0), mask);

GaussianBlur( mask, mask, cv::Size(15, 15), 0, 0 );
/* Run the Hough function */
imshow("mask",mask);
vector<cv::Vec3f> circles;
cv::HoughCircles(mask, circles, CV_HOUGH_GRADIENT,
4, size.height/4, 100, 140, 0, 0);
// ... iterating over all found circles

如您所见,我对所有调用使用相同的参数。我使用网络摄像头和静态示例对象对此进行了测试。
一个要求是使用 OpenCV2 C++ API。

有谁知道,为什么在同等条件下我会得到如此不同的结果?

编辑当我为了使结果更加平等而进行测试时,不同的阈值只是一个错误。
这些屏幕截图是在两个版本的阈值均设置为 40 的情况下拍摄的:

截图:(抱歉,还不能发布图片)
C and C++ version

最佳答案

我将 C 版本中的霍夫参数视为“..., 100, 40, 0, 0);”,而在 C++ 版本中将其视为“... 100, 140, 0, 0);”这种阈值的差异可能解释了结果的差异。

关于c++ - opencv houghcircles 差异 c c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482941/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com