我是靠谱客的博主 殷勤茉莉,这篇文章主要介绍【opencv】轮廓外接矩形,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<pre name="code" class="cpp"> //找出图片src中所有轮廓的外接矩形 IplImage* src; src=cvLoadImage((CT2CA)m_strPicPath,1);//读取彩色图 CvMemStorage* storage = cvCreateMemStorage( 0 );//创建一个内存区域,该区域是额可以动态增长的 CvSeq* contours = NULL; //定义一个序列,这些序列可以存放在上面的内存区域里 src=cvLoadImage((CT2CA)m_strPicPath,1);//读取彩色图 cvFindContours( src, storage, &contours, sizeof( CvContour ), CV_RETR_LIST, CV_CHAIN_APPROX_NONE );//检索所有轮廓 /*/-------对于contours的一些基本操作---------- int c=seq->total;//当前轮廓包含多少个元素,这里的元素为点 double length = cvArcLength(seq); //得到指定的那个轮廓的周长,该函数有3个参数:序列,起点(默认计算整条曲线),是否封闭曲线 double area = cvContourArea(seq); //得到指定的那个轮廓的面积 */ for( ; contours != NULL; contours = contours -> h_next )//循环遍历检索到的所有轮廓 { //---first method------ CvRect rect = cvBoundingRect( contours, 1 ); //根据序列,返回轮廓外围矩形; CvRect rect = cvBoundingRect( contours, 1 ); cvRectangle( cpy, cvPoint( rect.x, rect.y ),cvPoint( rect.x + rect.width, rect.y + rect.height ), cvScalar(255,255,0), 3 ); //---second method------- /* CvBox2D box = cvMinAreaRect2(contours,NULL); //最小外围矩形 //绘制外接最小矩形 CvPoint2D32f p[4]; cvBoxPoints(box,p); for(int i = 0;i<4;++i) { cvLine(src,cvPointFrom32f(p[i]),cvPointFrom32f(p[((i+1)%4)?(i+1):0]),CV_RGB(0,0,255)); } */ } cvShowImage("src",src);


复制代码
1

最后

以上就是殷勤茉莉最近收集整理的关于【opencv】轮廓外接矩形的全部内容,更多相关【opencv】轮廓外接矩形内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部