后续将不定期补充在使用EmguCV过程中的一些笔记,如何调用api实现相应功能。

1、查找对应的轮廓

IntPtr Dyncontour = new IntPtr();//存放检测到的图像块的首地址
IntPtr Dynstorage = CvInvoke.cvCreateMemStorage(0);//开辟内存区域
int m = 88;
int n = CvInvoke.cvFindContours(image, Dynstorage, ref Dyncontour, m,           Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL, Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, new Point(1, 1));
Seq<Point> header = new Seq<Point>(Dyncontour, null);
Seq<Point> contourTemp = header;MemStorage stor = new MemStorage();
while (contourTemp != null)// 获取符合条件的轮廓
{image.Draw(contourTemp.BoundingRectangle, new Gray(255), 2);contourTemp = contourTemp.HNext;}

2、斑点检测

Emgu.CV.Cvb.CvBlobs resultingImgBlobs = new Emgu.CV.Cvb.CvBlobs();
Emgu.CV.Cvb.CvBlobDetector bDetect = new Emgu.CV.Cvb.CvBlobDetector();uint numWebcamBlobsFound = bDetect.Detect(img, resultingImgBlobs);
foreach (Emgu.CV.Cvb.CvBlob targetBlob in resultingImgBlobs.Values)
{img.Draw(...);
}

3、判断是否为圆

 public int checkIfCircle(Emgu.CV.Cvb.CvBlob blob, double ratio)
{int ret = 0;IntPtr Dyncontour = new IntPtr();MemStorage Dynstorage = new MemStorage();Dyncontour = blob.GetContour(Dynstorage);//通过拟合圆方法判断检测到的斑点是否为圆。PointF pf = new PointF(0, 0);float radius = 0;CvInvoke.cvMinEnclosingCircle(Dyncontour, out pf, out radius);double cArea = 3.14 * radius * radius;if (cArea - blob.Area < cArea * ratio) // 如果拟合圆的面积跟斑点面积相差不大{// 圆ret = 1;}else{ret = 0;}Dynstorage.Dispose();return ret;
}

houghline detection

            Image<Gray,byte> imgGray = img.Convert<Gray,byte>();MemStorage storage = new MemStorage();IntPtr intPtrHoughLines = CvInvoke.cvHoughLines2(imgGray, storage, HOUGH_TYPE.CV_HOUGH_PROBABILISTIC, 1, Math.PI / 180, 50, 100, 10);Seq<LineSegment2D> lineSegment = new Seq<LineSegment2D>(intPtrHoughLines, storage);Seq<LineSegment2D> lineSegmentTemp = lineSegment; //画出检测结果unsafe{for (int i = 0; i < lineSegment.Total; ++i){Point* point = (Point*)CvInvoke.cvGetSeqElem(intPtrHoughLines, i);CvInvoke.cvLine(img, point[0], point[1], new MCvScalar(255, 0, 0), 2, LINE_TYPE.CV_AA, 0);//在原图像中画线}}saveImg(TAG, img);

【EmguCV】EmguCV各种调用相关推荐

  1. 学习OpenCV(6) EmguCV 双目视觉

    使用EmguCV进行双目视觉的基本操作 EmguCV是什么? 简单的来讲,EmguCV是一个在.NET环境下的对OpenCV中的函数进行了封装的库,类似的还有OpencvSharp,其实如果我们想在C ...

  2. 涂涂乐的详细实现之四--unity3d调用EmguCV实现图片识别

    涂涂乐严格来说有两个版本,一种是前面详细介绍过的,鼠标控制画图截图发送给服务端实现模型上色:另一种是通过实物图彩笔绘图之后通过扫描仪生成图片发送给服务端来实现模型上色. 动物模型有多种,贴图有多种,在 ...

  3. Emgucv FloodFill 在c#调用方法,把默认黑底图变白色

    有点烦,必须经过复杂的步骤才能把一个黑色底图变白色. 记录一下 Image<Bgr, Byte> img1 = new Image<Bgr, Byte>(300, 320);/ ...

  4. OpenCV、Halcon博客与资源收藏整理备用

    原文链接:https://libaineu2004.blog.csdn.net/article/details/88778170 原文作者:libaineu2004 OpenCV官网 https:// ...

  5. OpenCV/kornia/Pillow/Halcon/NI Vision/MIL/*计算机视觉资料汇总

    版权声明:本文为CSDN博主「libaineu2004」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lib ...

  6. 机器视觉基础知识/经典系统/常用领域以及机器视觉常用的图像处理库

    [0-定义] **计算机视觉:**一门研究如何使机器"看"的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别.跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理 ...

  7. Emgu CV4图像处理之环境搭建1(C#)

    测试环境: win10  64位 vistual studio 2019 Emgu CV 4.6.0 安装文档参考:Download And Installation - Emgu CV: OpenC ...

  8. 实时多人脸检测和识别

    目录 介绍 背景 技术 传统的 3-D 皮肤纹理分析 EmguCV EmguCV基础知识:我如何开始工作? 使用代码 如何训练原型? "首先启用面部检测"警告? 如何提高辨识度? ...

  9. Avalonia跨平台入门第二十二篇之人脸检测

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果.Expande ...

最新文章

  1. 第10章:Shell基础
  2. 五分钟了解操作系统内核
  3. 好用的vp n推荐2020_哪个牌子的沐浴露好,2020年最新沐浴露选购测评,好用好闻易清洗沐浴露品牌推荐...
  4. 用了十年的昵称badboy_怎样用5秒钟看清一对夫妻的真实感情状况?
  5. IoU-aware的目标检测,显著提高定位精度
  6. bash 历史记录_您将实际使用的7个Bash历史记录快捷方式
  7. 必须了解的Web安全知识(第一部分:HTTPS,TLS,SSL,CORS,CSP)
  8. screw-plus实现php代码安全
  9. qtable sorting enable中文是按照什么顺序_作为雅思过来人,你有什么话想告诫雅思小白的?...
  10. UNIX环境高级编程之第9章:进程关系
  11. 【操作基本数据类型的流】
  12. 请问mac上下virtualBox之后无法安装VBoxGuestAdditions怎么办??
  13. 微信公众号cookie+token获取
  14. Python10行代码实现模拟百度搜索
  15. Python - global 跨函数参数传递
  16. Ubuntu-pyqt5+qtDesigner安装手顺
  17. 歹徒逃亡3——————刺杀行动
  18. C语言实战小游戏:贪吃蛇大战
  19. 下一半***清除全集
  20. html如何唤醒app,记一次h5唤醒打开拼多多app

热门文章

  1. python画残差图_seaborn回归图---回归模型图Implot、线性回归图regplot、线性回归残差图residplot...
  2. 使用mybatis-plus时,报错500
  3. MySQL8.0安装失败
  4. JavaScript 基础知识查漏补缺
  5. 一、Python时间序列小波分析——实例分析
  6. iOS开发系列-音频、视频以及摄像
  7. 最详细的Java入门完整教程,学Java先收藏了
  8. 通过短信网关发送Wappush消息
  9. FleaPHP 的 Ajax 支持和 WebControls
  10. java02win7x64_Win 7 64位下jdk(java)1.8.X(64位)的经验