opencv椭圆检测
来源:互联网 发布:淘宝网推荐浏览器 编辑:程序博客网 时间:2024/06/05 11:02
原文地址:http://blog.csdn.net/henhen2002/article/details/4304674
运行环境 BCB 6.0~ 需要OPENCV 库支持
- CvMemStorage* storage = cvCreateMemStorage(0);
- CvSeq* contours;
- CvBox2D s;
- char string1[22];
- char string2[22];
- IplImage* img = cvLoadImage( "Ellipse.jpg" );
- IplImage* gray = cvCreateImage(cvGetSize(img), 8, 1 );
- IplImage* gray1 = cvCreateImage(cvGetSize(img), 8, 1 );
- cvCvtColor(img, gray, CV_BGR2GRAY );
- cvThreshold( gray, gray1 ,30, 255, CV_THRESH_BINARY );
- //图像二值化(这里按需要进行修改,椭圆应为高灰度值)
- cvNamedWindow( "Ellipse", 1 );
- cvShowImage("Ellipse",gray1);
- cvSaveImage("Ellipse11.jpg",gray1);
- cvFindContours( gray1, storage, &contours, sizeof(CvContour),
- CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
- s=cvFitEllipse2(contours);
- s.angle=90-s.angle;//这个地方是OPENCV的一个BUG 角度要修正一下
- //cvEllipse( img, cvPointFrom32f( s.center ),cvSize(s.size.width,s.size.height), s.angle,0, 360, CV_RGB(0,0,255), 1, 8, 0 );
- cvEllipseBox(img,s, CV_RGB(0,0,255),3, 8 , 0 );//画椭圆框
- cvNamedWindow( "Ellipse22", 1 );
- cvShowImage("Ellipse22",img);//原图上显示椭圆框
- cvSaveImage("Ellipse22.jpg",img);
- itoa(s.size.width, string1, 10 );
- itoa(s.size.height, string2, 10 );
- strcat(string1,", ");
- strcat(string1,string2);
- ShowMessage( AnsiString(" 椭圆的长短轴分别为:") + string1 + AnsiString(" 像素 "));
- 此程序只能检测一个椭圆,如果要检测多个椭圆,要做如下修改~
- CvMemStorage* storage = cvCreateMemStorage(0);
- CvSeq* contours;
- CvBox2D s;
- char string1[22];
- char string2[22];
- char string3[22];
- char string4[222];
- IplImage* img = cvLoadImage( "Ellipse.jpg" );
- IplImage* gray = cvCreateImage(cvGetSize(img), 8, 1 );
- IplImage* gray1 = cvCreateImage(cvGetSize(img), 8, 1 );
- cvCvtColor(img, gray, CV_BGR2GRAY );
- cvThreshold( gray, gray1 ,100, 255, CV_THRESH_BINARY );
- cvNamedWindow( "Ellipse", 1 );
- cvShowImage("Ellipse",gray1);
- cvSaveImage("Ellipse11.jpg",gray1);
- int i=cvFindContours( gray1, storage, &contours, sizeof(CvContour),
- CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
- itoa(i, string3, 10 );
- for(CvSeq* c=contours; c!=NULL; c=c->h_next)
- {
- s=cvFitEllipse2(c);
- s.angle=90-s.angle;
- cvEllipseBox(img,s, CV_RGB(255,0,0),2, 8 , 0 );//画椭圆框
- itoa(s.size.width, string1, 10 );
- itoa(s.size.height, string2, 10 );
- strcat(string1," ");
- strcat(string1,string2);
- strcat(string4,string1);
- strcat(string4," | ");
- }
- cvNamedWindow( "Ellipse22", 1 );
- cvShowImage("Ellipse22",img);//原图上显示椭圆框
- cvSaveImage("Ellipse22.jpg",img);
- ShowMessage( AnsiString(" 共找到椭圆 ") + string3 + AnsiString(" 个/n ")+
- AnsiString("椭圆的长短轴分别为:") + string4 + AnsiString("像素 "));
0 0
- opencv椭圆检测
- opencv关于椭圆检测
- opencv轮廓检测之椭圆检测
- opencv轮廓检测并绘制椭圆
- opencv椭圆肤色模型人脸检测
- Opencv--20行代码实现椭圆检测
- opencv轮廓检测之椭圆检测-----算法篇(8) Hough transformation检测椭圆
- opencv轮廓检测之椭圆检测-----算法篇(9)--检测椭圆的其他算法
- opencv轮廓检测之椭圆检测-----算法篇(1)
- opencv轮廓检测之椭圆检测-----算法篇(3)--Sobel
- opencv轮廓检测之椭圆检测-----算法篇(4)--Canny
- opencv轮廓检测之椭圆检测-----算法篇(12)--RANSAC
- opencv 皮肤检测 椭圆模型+轮廓去噪
- Hough变换检测椭圆 附带matlab与opencv代码
- opencv轮廓检测之椭圆检测-----算法篇(7)--Hough transform检测圆
- opencv轮廓检测之椭圆检测-----算法篇(2)---Sobel---自定义卷积核问题
- opencv轮廓检测之椭圆检测-----算法篇(5)---LAPLACIAN算子
- opencv轮廓检测之椭圆检测-----算法篇(6)--ACTIVE CONTOURS
- 自定义 UITextView 的 placeholder 属性
- 剥离与插入调试信息及符号表
- 几种常用的传值方式
- Vector xml 中pathData的语法
- 三星手机连接公司内网时需要设置EAP 方式: PEAP
- opencv椭圆检测
- KVM_SET_USER_MEMORY_REGION
- 最新Mac OS X 10.11之后 安装cocoapods及使用详解
- Gson解析
- Android Studio NDK 入门教程(1)--来自C 语言的String
- 1058. A+B in Hogwarts (20)-PAT甲级真题
- bzoj 4539: [Hnoi2016]树(缩点+主席树+lca)
- Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别
- LINUX 下的账号管理