运行环境 BCB 6.0~  需要OPENCV 库支持

[cpp] view plaincopy
  1. CvMemStorage* storage = cvCreateMemStorage(0);
  2. CvSeq* contours;
  3. CvBox2D s;
  4. char string1[22];
  5. char string2[22];
  6. IplImage* img = cvLoadImage( "Ellipse.jpg" );
  7. IplImage* gray = cvCreateImage(cvGetSize(img), 8, 1 );
  8. IplImage* gray1 = cvCreateImage(cvGetSize(img), 8, 1 );
  9. cvCvtColor(img, gray, CV_BGR2GRAY );
  10. cvThreshold( gray, gray1 ,30, 255, CV_THRESH_BINARY );
  11. //图像二值化(这里按需要进行修改,椭圆应为高灰度值)
  12. cvNamedWindow( "Ellipse", 1 );
  13. cvShowImage("Ellipse",gray1);
  14. cvSaveImage("Ellipse11.jpg",gray1);
  15. cvFindContours( gray1, storage, &contours, sizeof(CvContour),
  16. CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
  17. s=cvFitEllipse2(contours);
  18. s.angle=90-s.angle;//这个地方是OPENCV的一个BUG 角度要修正一下
  19. //cvEllipse( img, cvPointFrom32f( s.center ),cvSize(s.size.width,s.size.height), s.angle,0, 360, CV_RGB(0,0,255), 1, 8, 0 );
  20. cvEllipseBox(img,s, CV_RGB(0,0,255),3, 8 , 0 );//画椭圆框
  21. cvNamedWindow( "Ellipse22", 1 );
  22. cvShowImage("Ellipse22",img);//原图上显示椭圆框
  23. cvSaveImage("Ellipse22.jpg",img);
  24. itoa(s.size.width, string1, 10 );
  25. itoa(s.size.height, string2, 10 );
  26. strcat(string1,", ");
  27. strcat(string1,string2);
  28. ShowMessage( AnsiString(" 椭圆的长短轴分别为:")  + string1 + AnsiString(" 像素 "));
  29. 此程序只能检测一个椭圆,如果要检测多个椭圆,要做如下修改~
  30. CvMemStorage* storage = cvCreateMemStorage(0);
  31. CvSeq* contours;
  32. CvBox2D s;
  33. char string1[22];
  34. char string2[22];
  35. char string3[22];
  36. char string4[222];
  37. IplImage* img = cvLoadImage( "Ellipse.jpg" );
  38. IplImage* gray = cvCreateImage(cvGetSize(img), 8, 1 );
  39. IplImage* gray1 = cvCreateImage(cvGetSize(img), 8, 1 );
  40. cvCvtColor(img, gray, CV_BGR2GRAY );
  41. cvThreshold( gray, gray1 ,100, 255, CV_THRESH_BINARY );
  42. cvNamedWindow( "Ellipse", 1 );
  43. cvShowImage("Ellipse",gray1);
  44. cvSaveImage("Ellipse11.jpg",gray1);
  45. int i=cvFindContours( gray1, storage, &contours, sizeof(CvContour),
  46. CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
  47. itoa(i, string3, 10 );
  48. for(CvSeq* c=contours; c!=NULL; c=c->h_next)
  49. {
  50. s=cvFitEllipse2(c);
  51. s.angle=90-s.angle;
  52. cvEllipseBox(img,s, CV_RGB(255,0,0),2, 8 , 0 );//画椭圆框
  53. itoa(s.size.width, string1, 10 );
  54. itoa(s.size.height, string2, 10 );
  55. strcat(string1,"  ");
  56. strcat(string1,string2);
  57. strcat(string4,string1);
  58. strcat(string4," | ");
  59. }
  60. cvNamedWindow( "Ellipse22", 1 );
  61. cvShowImage("Ellipse22",img);//原图上显示椭圆框
  62. cvSaveImage("Ellipse22.jpg",img);
  63. ShowMessage( AnsiString(" 共找到椭圆 ")  + string3 + AnsiString(" 个/n ")+
  64. AnsiString("椭圆的长短轴分别为:")  + string4 + AnsiString("像素 "));

检测图像中的椭圆 并求其长短轴...相关推荐

  1. opencv 识别长方形_使用OpenCV检测图像中的矩形

    本文实例为大家分享了OpenCV检测图像中矩形的具体代码,供大家参考,具体内容如下 前言 1.OpenCV没有内置的矩形检测的函数,如果想检测矩形,要自己去实现. 2.我这里使用的OpenCV版本是3 ...

  2. 一种移动端简单的检测图像中身份证(银行卡)的方式

    一种简单的检测图像中身份证(银行卡)的方式 客户端检测身份证.银行卡之类的功能应该是很常见的,一般都是采用集成第三方OCR sdk来完成信息的采集.但是如何只是初步识别相机镜头中到底包不包含身份证,然 ...

  3. 使用Python和OpenCV检测图像中的条形码

    使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...

  4. 使用Python,OpenCV和Hough圆检测图像中的圆

    使用Python,OpenCV和Hough圆检测图像中的圆 1. 效果图 2. cv2.HoughCircles(image, method, dp, minDist) 3. 源码 参考 前几篇博客中 ...

  5. Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示

    Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示 第一章:霍夫变换检测圆 ① 实例演示1 ② 实例演示2 ③ 霍夫变换函数解析 第二章:Python + openc ...

  6. 教你如何使用 OpenCV检测图像中的轮廓

    @Author:Runsen 轮廓是连接所有具有某种颜色或强度的连续点的闭合曲线,它们代表图像中发现的对象的形状.轮廓检测是一种用于形状分析和物体检测和识别的有用技术. 轮廓检测并不是图像分割的唯一算 ...

  7. 使用 OpenCV 在 Python 中检测图像中的形状

    OpenCV 是一个开源库,主要用于处理图像和视频以识别形状.对象.文本等.它主要与 python 一起使用.在本文中,我们将了解如何检测图像中的形状.为此,我们需要OpenCV 的cv2.findC ...

  8. 利用OpenCV检测图像中的多个水果

    OpenCV检测图像中的多个水果 最近面试碰到一个图像算法题,要求: (1)检测一副图像中的多个苹果并标识出来. (2)标识时需要将图像中苹果按照从大到小给定序号,显示出来. 基于以上两点,准备利用C ...

  9. 图像文本检测的标注工具_如何检测图像中的文本

    图像文本检测的标注工具 Images are a great way to communicate without text but oftentimes images are used/abused ...

最新文章

  1. Linux启动过程分析
  2. java retentionpolicy_Java注解之如何利用RetentionPolicy.SOURCE生存周期
  3. 声网sdk android接入,Android 集成声网Agora 音视频实时通话(三)
  4. 企业网络推广方法浅析如何提高网站的点击率和访问量呢?
  5. linux命令(51):set 指定行,直接替换并修改文件
  6. ]remove-duplicates-from-sorted-list-ii (删除)
  7. 用strtotime()和date()函数算出2019年9月的周日日期
  8. Mac忘记root密码(Mac OS Sierra忘记root密码如何重置)
  9. Xcode里-ObjC, -all_load, -force_load
  10. 安卓非常实用的自动化测试工具 -- Monkey详细的说明
  11. 项目上线流程-实时Flink
  12. 深恶痛绝的No mapping found for HTTP request with URI
  13. C# 代码 Unicode码和字符串相互转换
  14. 高通WCD9370音频编解码器模块芯片介绍
  15. Linux高级进程编程———在任意两个进程间传递文件描述符:使用 sendmsg 和 recvmsg 实现
  16. NP-Hard?大白话学习P问题、NP问题、NP完全问题和NP难问题
  17. 【日语】日语单词 ---- 身体部位
  18. sort函数使用cmp出错Line 22: Char 38: error: reference to non-static member function must be called
  19. 用了半年chromium,说说心得
  20. lorawan的工作原理_详解LoRaWAN网络架构和协议内容

热门文章

  1. HiBit Uninstaller(电脑软件强力卸载工具)官方中文版V2.6.20 | hibituninstaller怎么样? | 电脑软件卸载不干净怎么办?
  2. Learning Without Forgetting的pytorch实现
  3. 2020年11月 工信部考试——Hadoop(数据应用技术)中级认证 1
  4. 牵线搭桥!让用户更高效地完成表单填写
  5. ESXI 7.0 安装教程
  6. (008)前端css,js,Jquery,Servlet入门
  7. GD32450i-EVAL学习笔记 12 - EXMCNandFlash
  8. Bluedroid 打开蓝牙流程
  9. 牛客网C语言 算学分绩
  10. 照片模糊怎么变清晰?