VS2013 + OpenCvSharp 图片中的红圈里面的东西是怎么添加进来的?谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2013 + OpenCvSharp 图片中的红圈里面的东西是怎么添加进来的?谢谢相关的知识,希望对你有一定的参考价值。

参考技术A 1)把需要的opencv的dll放到exe生成的文件夹下,....bin\x86\Debug
此例只需要opencv_core231.dll和opencv_imgproc231.dll, 如果不知道需要哪个dll就把opencv文件夹中bin下面的dll都拷贝过来。
2)OpenCvSharp.dll确保已经在这个debug文件夹中
3)从opencv文件夹中的 .....\build\common\tbb\ia32\vc10 把tbb的一系列.dll复制过来到这个debug文件夹中
因为opencv_core.dll需要依赖tbb.dll 否则会出现DllNotFoundException
4)本例中,需要一个名为“lenna”的png图片

6. 若出现msvcr100d.dll is missing 的错误
参考http://tech.dir.groups.yahoo.com/group/OpenCV/message/78648
下载上面链接中的文件,放到opencv的bin目录下。
After you extract MSVCR100D_MSVCP100D.rar file,
you must copy MSVCP100D.dll and msvcr100d.dll to C:\OpenCV2.2\bin
then you will never found MSVCP100D.dll and msvcr100d.dll is missing.

OpenCvSharp用掩膜来实现圆形的ROI区域

首先我有一个问题:opencv有没有一个类似于Rect的这么一个圆的框架,就像下面这段代码能直接从原图上裁剪下来一个圆形的ROI(ROI图片是一个圆),而不是像本文介绍的这样用掩膜遮掉不感兴趣区域(ROI图片大小和原图一样)?有知道的大牛评论分享一下,欢迎讨论

Rect tmp_Rect = new Rect(Math.Min(X0, X1), Math.Min(Y0, Y1), Math.Abs(X0 - X1), Math.Abs(Y0 - Y1));
roiImg = new Mat(srcImg, tmp_Rect);

 

好了,那么言归正传:(完整代码我就不贴出了,步骤很简单,很清晰)

步骤:读图 ⋙ 画ROI/霍夫变换识别圆 ⋙ 创建一个掩膜并将圆按原位置画在掩膜上 ⋙ 对掩膜水漫填充 ⋙ 生成原图与掩膜结合的图片

你可以利用霍夫变换识别图中的圆形区域CircleSegment[] cs = Cv2.HoughCircles(roiClone, HoughMethods.Gradient, 1, 80, 70, 100, 100, 200);

    或者你利用Cv2.Circle(……)手动画一个圆形区域,将圆形的中点Point seed记录下来(这个点水漫填充时会用到,即水漫填充算法的起始点)

接着就是创建掩膜,所谓的掩膜说白了:就是创建一个和原图大小一致的这么一个空容器Mat mask = Mat.Zeros(OrgMatClone.Size(), MatType.CV_8U);   

然后,再利用水漫填充将感兴趣区域填充起来 Cv2.FloodFill(mask, seed, new Scalar(255));

最后,srcImg.CopyTo(resMat, mask);    注:srcImg是原图片,resMat是原图与掩膜结合之后的结果图

 

“其他形状的ROI也是同样的道理,思路也是这样的思路就是第一步不同”

画任意形状的ROI你可以参考这篇博客我是超级链接哦

 

最后:效果图如下

 

当然,还没结束

我们可以利用Cv2.FindContours(……)来这样处理:

你有没有发现这个算子的第三个参数是啥,所以就可以这样:

就得到这样的效果:(左:原图 、右上:处理后的圆形ROI、右下:原矩形ROI)

以上是关于VS2013 + OpenCvSharp 图片中的红圈里面的东西是怎么添加进来的?谢谢的主要内容,如果未能解决你的问题,请参考以下文章

无法将 uchar ptr 转换为 opencvsharp

OpenCvSharp尝试

c#Opencvsharp4学习笔记与心得(Winform)

OpenCvSharp用掩膜来实现圆形的ROI区域

OpenCVSharp4 识别物体系列之预处理

如何在 Xamarin Forms 中打开图像并将其与 Emgu Cv/OpenCvSharp 一起使用?