我想用opencv提取外矩形,结果提取了画布外轮廓.cvFindContours(bw,storage,&contour,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);我要提取大圆的外接矩,可是结果提了个画框~
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/19 04:35:04
![我想用opencv提取外矩形,结果提取了画布外轮廓.cvFindContours(bw,storage,&contour,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);我要提取大圆的外接矩,可是结果提了个画框~](/uploads/image/z/12368778-42-8.jpg?t=%E6%88%91%E6%83%B3%E7%94%A8opencv%E6%8F%90%E5%8F%96%E5%A4%96%E7%9F%A9%E5%BD%A2%2C%E7%BB%93%E6%9E%9C%E6%8F%90%E5%8F%96%E4%BA%86%E7%94%BB%E5%B8%83%E5%A4%96%E8%BD%AE%E5%BB%93.cvFindContours%28bw%2Cstorage%2C%26contour%2Csizeof%28CvContour%29%2CCV_RETR_EXTERNAL%2CCV_CHAIN_APPROX_SIMPLE%29%3B%E6%88%91%E8%A6%81%E6%8F%90%E5%8F%96%E5%A4%A7%E5%9C%86%E7%9A%84%E5%A4%96%E6%8E%A5%E7%9F%A9%EF%BC%8C%E5%8F%AF%E6%98%AF%E7%BB%93%E6%9E%9C%E6%8F%90%E4%BA%86%E4%B8%AA%E7%94%BB%E6%A1%86%7E)
我想用opencv提取外矩形,结果提取了画布外轮廓.cvFindContours(bw,storage,&contour,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);我要提取大圆的外接矩,可是结果提了个画框~
我想用opencv提取外矩形,结果提取了画布外轮廓.
cvFindContours(bw,storage,&contour,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);
我要提取大圆的外接矩,可是结果提了个画框~
我想用opencv提取外矩形,结果提取了画布外轮廓.cvFindContours(bw,storage,&contour,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);我要提取大圆的外接矩,可是结果提了个画框~
你可以统计外轮廓上点的坐标啊,然后找出左上角和右下角的点,外接矩就出来了.我把我的代码给你贴出来,不明白了再追问我.
CvPoint temp_point;
//初始化角点的坐标,左上角为(0,0),右下角为(height,weight)
int roi_x0 = image->height;
int roi_y0 = image->width;
int roi_x1 = 0;
int roi_y1 = 0;
//遍历轮廓roi_contour上的所有点,并找出左上角和右下角的点
for(int k = 0; k < roi_contour->total; k ++)
\x05{
\x05\x05temp_point = (CvPoint*) cvGetSeqElem(roi_contour,k);
\x05\x05if(temp_point->x < roi_x0)
\x05\x05{
\x05\x05\x05roi_x0 = temp_point->x;
\x05\x05}
\x05\x05if(temp_point->y < roi_y0)
\x05\x05{
\x05\x05\x05roi_y0 = temp_point->y;
\x05\x05}
\x05\x05if(temp_point->x > roi_x1)
\x05\x05{
\x05\x05\x05roi_x1 = temp_point->x;
\x05\x05}
\x05\x05if(temp_point->y > roi_y1)
\x05\x05{
\x05\x05\x05roi_y1 = temp_point->y;
\x05\x05}
\x05}
CvRect roi_rect;//外接矩
\x05roi_rect.x = roi_x0 ;
\x05roi_rect.y = roi_y0 ;
\x05roi_rect.height = (roi_y1 - roi_y0);
\x05roi_rect.width = (roi_x1 - roi_x0);
\x05cout
CV_RETR_EXTERNAL就是只检测外轮廓的意思。,你要提取的是哪个矩形你标出来。
cvMinAreaRect2( const CvArr* points, CvMemStorage* storage CV_DEFAULT(NULL));
轮廓的最小外接矩形
http://blog.csdn.net/z397164725/article/details/7248096