0
我已经编写了以下程序来实时检测圆。但它不起作用。 编译器不显示任何错误,但问题是程序甚至没有检测到一个圆。我该如何解决它? 这里是我的代码 using namespace cv;使用OpenCV进行实时圆检测
int main()
{
VideoCapture cap(0);
namedWindow("main",CV_WINDOW_AUTOSIZE);
namedWindow("blur",CV_WINDOW_AUTOSIZE);
Mat img;
Mat img2;
int c;
float radius;
while(1)
{
cap>>img;
imshow("main",img);
cvtColor(img,img2,CV_BGR2GRAY);
GaussianBlur(img2,img2,Size(9,9),2,2);
imshow("blur",img2);
vector <Vec3f> circles;
HoughCircles(img2,circles,CV_HOUGH_GRADIENT,1,img2.rows/8,200,100,0,0);
for(size_t i=0;i<circles.size();i++)
{
Point center(cvRound(circles[i][0]),cvRound(circles[i][1]));
radius = cvRound(circles[i][2]);
circle(img,center,3,Scalar(0,255,0),-1,8,0);
circle(img,center,radius,Scalar(0,0,255),3,8,0);
}
c = waitKey(33);
if(c==27)
break;
}
destroyAllWindows();
return 0;
}
我尝试了你所说的,但它仍然不适用于实时圆检测。但是,当我试图通过加载图像而不是使用视频捕捉它的工作。我怎样才能使它工作的实时圈检测 – BBB
@Behroz检查出更新的答案。 – herohuyongtao