大佬教程收集整理的这篇文章主要介绍了c – OpenCV边界框,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到的问题是边界框被淹没不止一次,实际上绘制了多个框.我过去几天试图做的是以某种方式消除绘制的盒子数量并且只绘制一个大的边界框.
我正在寻找一些技术来填充整个对象,我相信在这种情况下会有所帮助.
vector<vector<Point> > contours; vector<Vec4i> hierarchy; vector<Vec3f> vecCircles; vector<Vec3f>::iterator itrCircles; while(1) { Mat frame; cap >> frame; // get a new frame from camera ///////////////////// Mat imgHSV; cvtColor( frame,imgHSV,CV_BGR2HSV ); //////////////////// Mat blur_out; GaussianBlur(imgHSV,blur_out,Size(1,1),2.0,2.0); //////////////////// Mat range_out; inRange(blur_out,Scalar(100,100,100),Scalar(120,255,255),range_out); //////////////////// findContours(range_out,contours,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,Point(0,0) ); /// Approximate contours to polygons + get bounding rects and circles vector<vector<Point> > contours_poly( contours.size() ); vector<Rect> boundRect( contours.size() ); vector<Point2f>center( contours.size() ); vector<float>radius( contours.size() ); for( int i = 0; i < contours.size(); i++ ) { approxPolyDP( Mat(contours[i]),contours_poly[i],3,true ); boundRect[i] = boundingRect( Mat(contours_poly[i]) ); } /// Draw polygonal contour + bonding rects Mat drawing = Mat::zeros( range_out.size(),CV_8UC3 ); for( int i = 0; i< contours.size(); i++ ) { Scalar color = Scalar(255,255); drawContours( drawing,contours_poly,i,color,1,8,vector<Vec4i>(),Point() ); rectangle( drawing,boundRect[i].tl(),boundRect[i].br(),2,0 ); }
如果有人可以提出一些提示或提供一些信息来源,我可以找到我的问题的答案.
编辑(快速更新):
我设法将输出图像逐渐安静地提升到安静的结果.关键是使用erode& amp;扩张以及我的findContours()函数.我将CV_RETR_TREE更改为CV_RETR_EXTERNAL.我还解决了一些其他小事,但效果很好:
以上是大佬教程为你收集整理的c – OpenCV边界框全部内容,希望文章能够帮你解决c – OpenCV边界框所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。