打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
opencv 轮廓的长度,面积,外接矩形(平行坐标轴),处接最小矩形,处接圆 , 椭圆

代码如下:

  1. #include <cv.h>   
  2. #include <cxcore.h>   
  3. #include <highgui.h>   
  4. #include <iostream>   
  5. using namespace std;  
  6.   
  7. int main()  
  8. {  
  9.     IplImage *src = cvLoadImage("f:\\images\\test2.bmp",CV_LOAD_IMAGE_GRAYSCALE);  
  10.     CvMemStorage *storage = cvCreateMemStorage();  
  11.     CvSeq *seq = NULL;  
  12.     int cnt = cvFindContours(src,storage,&seq);  
  13.     seq = seq->h_next;  
  14.     double length = cvArcLength(seq);  
  15.     double area = cvContourArea(seq);  
  16.     CvRect rect = cvBoundingRect(seq,1);  
  17.     CvBox2D box = cvMinAreaRect2(seq,NULL);  
  18.       
  19.     cout<<"Length = "<<length<<endl;  
  20.     cout<<"Area = "<<area<<endl;  
  21.       
  22.     IplImage *dst = cvCreateImage(cvGetSize(src),8,3); cvZero(dst);  
  23.     cvDrawContours(dst,seq,CV_RGB(255,0,0),CV_RGB(255,0,0),0);  
  24.     cvRectangleR(dst,rect,CV_RGB(0,255,0));  
  25.     cvShowImage("dst",dst);  
  26.     cvWaitKey();  
  27.   
  28.     CvPoint2D32f center;  
  29.     float radius;  
  30.     cvMinEnclosingCircle(seq,¢er,&radius);  
  31.     cvCircle(dst,cvPointFrom32f(center),cvRound(radius),CV_RGB(100,100,100));  
  32.     cvShowImage("dst",dst);  
  33.     cvWaitKey();  
  34.   
  35.     CvBox2D ellipse = cvFitEllipse2(seq);  
  36.     cvEllipseBox(dst,ellipse,CV_RGB(255,255,0));  
  37.     cvShowImage("dst",dst);  
  38.     cvWaitKey();  
  39.   
  40.     //绘制外接最小矩形   
  41.     CvPoint2D32f pt[4];  
  42.     cvBoxPoints(box,pt);  
  43.     for(int i = 0;i<4;++i){  
  44.         cvLine(dst,cvPointFrom32f(pt[i]),cvPointFrom32f(pt[((i+1)%4)?(i+1):0]),CV_RGB(0,0,255));  
  45.     }  
  46.     cvShowImage("dst",dst);  
  47.     cvWaitKey();  
  48.   
  49.     cvReleaseImage(&src);  
  50.     cvReleaseImage(&dst);  
  51.     cvReleaseMemStorage(&storage);    
  52. }  

输入图像 为bmp格式(自己用纯黑画的,已经是二值了), 如果用我下面的图片直接另存为,则就先载入图像,然后灰度化,再二值化



结果:




本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
OpenCV画轮廓的外界圆矩形椭圆等
OpenCV 阈值分割cvThreshold()
特征提取代码总结
OpenCV笔记:DistTransform的使用方法
自适应阈值
[opencv] 寻找凸包、外接矩形、最小包围矩形,最小外接圆
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服