你可以统计外轮廓上点的坐标啊,然后找出左上角和右下角的点,外接矩就出来了。我把我的代码给你贴出来,不明白了再追问我。
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 ++)
{
temp_point = (CvPoint) cvGetSeqElem(roi_contour, k);
if(temp_point->x < roi_x0)
{
roi_x0 = temp_point->x;
}
if(temp_point->y < roi_y0)
{
roi_y0 = temp_point->y;
}
if(temp_point->x > roi_x1)
{
roi_x1 = temp_point->x;
}
if(temp_point->y > roi_y1)
{
roi_y1 = temp_point->y;
}
}
CvRect roi_rect;//外接矩
roi_rectx = roi_x0 ;
roi_recty = roi_y0 ;
roi_rectheight = (roi_y1 - roi_y0);
roi_rectwidth = (roi_x1 - roi_x0);
cout<<roi_rectx<<","<<roi_recty<<endl;
cout<<roi_rectheight<<","<<roi_rectwidth<<endl;
cvRectangle(dst_image,cvPoint(roi_rectx,roi_recty),cvPoint((roi_rectx+roi_rectwidth),(roi_recty+roi_rectheight)),CV_RGB(255,255,255),1);//这个语句是画出矩形
cvFindContours 中CV_RETR_CCOMP这个参数是提取所有轮廓,顶层为连通域的外围边界,次层为洞的内层边界。h_next是下一个最外层的轮廓,而v_next是次层的轮廓,
以上就是关于我想用opencv提取外矩形,结果提取了画布外轮廓。全部的内容,包括:我想用opencv提取外矩形,结果提取了画布外轮廓。、opencv 提取中间那些小矩形的轮廓、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)