-3
這是上圖。我正在使用opencv來處理它,並且我試圖使用Hough變換,但是失敗了。另外,我發現在Hough變換中設置相關參數非常困難。
的代碼如下:
#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;
}
但結果是我無法檢測到任何圈子。
我如何檢測內圈?
你有什麼好主意嗎?
你有沒有考慮谷歌「圓檢測opencv」?來吧!甚至有一個官方教程,關於這個http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html – Piglet
我已經提出了我的代碼,請看看。@ Piglet –
爲什麼你的最小和最大半徑是0? 請確保您瞭解參數的作用,並將半徑限制在您期望內圈的範圍內。 – Piglet