OpenCvSharp初探

最近接了个小毕设,要求用winform调用OpenCV识别一些简单的物件。网上关于调用DLL的文看的我一头雾水,而且也知道有类似OpenCV的C#接口的计算机视觉库,也就直接去了解这方面了。EmguCV应该是比较早且之前比较出名的C#版OpenCV,目前项目有507个stars。然而另一个日本人编写的类库已经有1200+的stars,并且在Visual Studio中下载量也已经超过了OpenCvSharp。下面就以OpenCvSharp为大家传授点人生经验(啊蛤)。

image.png

INTRO

这是项目的链接,里面有详细的介绍和Document。

image.png

项目Features如上。比较好的一点就是能够很方便地跟.Net平台的数据结构进行转换。而且相对EmguCV而言,实现的算法更多,风格也跟C++ API更相似。


对于商用来说,EmguCV使用的是GPL协议,OpenCvSharp则是跟OpenCV一样的BSD协议(网上有人说是LGPL?但github上的README列出来的是BSD)。这方面的话对于学习者来说没啥区别,但对于正儿八经的开发者来说还是需要考虑的,BSD则是更有吸引力的协议。

至于安装也是十分简单,只需要在VS上就能完成。我这里使用的是2017 community,仅供参考。

image.png

打开NuGet包管理器

image.png


可以看到,下载量足足有20w,而且已经超过了EmguCV了。

Demo

这里使用Winform做个带界面的小程序,拖个按钮就好。也可以使用空项目。

private void btnOpen_Click(object sender, EventArgs e){
    //选择图片
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.RestoreDirectory = true;
    string imgName = "";
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        imgName = openFileDialog.FileName;
    }
    Console.WriteLine("文件名为" + imgName);

    //读取并进行边缘检测
    Mat srcImg = new Mat(imgName, ImreadModes.Color);
    Cv2.ImShow("input", srcImg);

    Mat dstImg = new Mat();
    Cv2.Canny(srcImg, dstImg, 50, 200);
    Cv2.ImShow("output", dstImg);}


image.png

国际惯例,lenna女神拿出来


image.png


其他

由于一年多没用C#和Winform,所以语法方面忘得差不多了。唠叨一下项目中遇到的坑。

在C艹中,ROI是可以这样定义的。image是事先定义的Mat。

Mat imageROI = image(Rect(500, 250, logo.cols, logo.rows));

而在C井中,要这样定义

Mat dstImg = new Mat(srcImg, new Rect(x, y, width, height));


当时想用C++的Style来定义,搞了半天发现根本就没实现。。。当时就在吐槽,后来发现C#是不能对括号进行重载的 = =!真是尴尬。C#这方面的话还是要用熟练,搞机器视觉这行还是很有用的。




作者:Jacob杨帮帮
链接:https://www.jianshu.com/p/37dab2c67477
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年5月    »
12345
6789101112
13141516171819
20212223242526
2728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864