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

来源:互联网 发布:网游mac版的游戏有什么 编辑:程序博客网 时间:2024/05/03 23:12
  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格式(自己用纯黑画的,已经是二值了), 如果用我下面的图片直接另存为,则就先载入图像,然后灰度化,再二值化



结果:




网址:http://blog.csdn.net/fdl19881/article/details/6730112

0 0
原创粉丝点击