我想用opencv提取外矩形,结果提取了画布外轮廓。

我想用opencv提取外矩形,结果提取了画布外轮廓。,第1张

你可以统计外轮廓上点的坐标啊,然后找出左上角和右下角的点,外接矩就出来了。我把我的代码给你贴出来,不明白了再追问我。

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 提取中间那些小矩形的轮廓、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10121322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存