一、配置OpenCV

首先,我们新建一个工程,然后就是给这个工程配置OpenCV了,最简单的方法还是Nuget,来我们右键一个Nuget:

打开Nuget后,你可以直接输入OpenCVSharp4来查找,当然,如果你只是输入OpenCV那显示的选项足够使你眼花缭乱。这里我们还是直接一些输入OpenCVSharp4,直接安装箭头所指四个。

二、尝试调用OpenCV

第一个程序,我们暂时不做图形识别,这里就看看我们的opencv是否可以工作了,我们做一个图片灰度化的程序,首先记得引入OpenCvSharp

using OpenCvSharp;
private void button1_Click(object sender, EventArgs e){String fname=String.Empty;OpenFileDialog ofd = new OpenFileDialog();if (ofd.ShowDialog() == DialogResult.OK)fname=ofd.FileName;Mat mat = new Mat(fname);Mat gmat = new Mat();Cv2.CvtColor(mat, gmat, ColorConversionCodes.BGR2GRAY);Cv2.ImShow(fname, gmat);Cv2.WaitKey();     }

我们随意打开一张下载的图(一张arduino板子的图),给取了灰度化

三、初步处理

我们拿局部做一个处理,这里用Canny对轮廓进行识别,测试代码如下:

 String fname=String.Empty;OpenFileDialog ofd = new OpenFileDialog();if (ofd.ShowDialog() == DialogResult.OK)fname=ofd.FileName;if(fname!=String.Empty){pictureBox1.Image =new Bitmap(fname);Mat mat = new Mat(fname);Mat gmat = new Mat();Cv2.CvtColor(mat, gmat, ColorConversionCodes.BGR2GRAY);Cv2.Canny(mat, gmat, 100, 200);pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(gmat);}

效果如下

到这里,我们的OpenCv算是开张了,后面的工作就是识别啦。

四、显示在PictureBox上

显示在picturebox控件上,并且让图片居中显示。注意,这里一定要安装OpenCVSharp4.Extensions,否则无法获得BitmapConverter.ToBitmap函数。

pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
pictureBox2.SizeMode = PictureBoxSizeMode.CenterImage;
pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);
pictureBox2.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(gmat);


当然,现在这里的图片显示位置是固定的,对于观察识别的区域不太方便,我们下一篇博文,我们考虑实现在PictureBox内移动,效果如下:

感兴趣的童鞋可以继续关注。

在C#中初测OpencvSharp4相关推荐

  1. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

  2. 【OpenCvSharp】使用SSIM指数衡量图片相似度

    在自动化测试时,经常需要截图和标准图片对比,以此判断测试是否成功,那么用什么来判断测试图片与标准图片是相似的呢?这里需要使用SSIM (Structual Similarity, 结构相似性) 用来判 ...

  3. VS2015可以运行opencv库,但不出图片。

    1.将VS的运行环境改为x64的(5个openCV库的运行需求),添加引用前四个dll后,分别在相应文件Console_text001\Console_text001\bin的Debug和x64里放入 ...

  4. 面试:第十二章:所有总结

    Java基础 java基本类型哪些,所占字节 byte :1个字节 short :2个字节 char :2个字节 int :4个字节 long :8个字节 float :4个字节 double :8个 ...

  5. linux内核分析(转自某位大哥网上的笔记)

    启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...

  6. opencv_4.5.0/OpenCvSharp4.0 九点标定

    首先说说OpenCvSharp吧: /***********************************************************/ 首先说说OpenCvSharp4的安装: ...

  7. 在C#中使用OpenCV(使用OpenCVSharp)

    OpenCVSharp有什么特点 直接封装了更多的OpenCV方法,降低了学习的难度,比EmguCV更便于使用 大部分继承了IDisposable接口,方便使用using语句 可以直接调用原始风格的O ...

  8. c#WinForm使用OpencvSharp4实现简易抓边

    环境: VS2019 , OpencvSharp4 4.5.5.20211231 , .NET Framework 4.8 界面设计: 图像显示用的是picturebox 控件都是windows基本控 ...

  9. 开心测试卷答案软件六下外研版,外研版英语六年级小升初测试卷含答案

    <外研版英语六年级小升初测试卷含答案>由会员分享,可在线阅读,更多相关<外研版英语六年级小升初测试卷含答案(6页珍藏版)>请在人人文库网上搜索. 1.外研版小升初考试英语试题一 ...

最新文章

  1. html 判断boolean,js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则...
  2. 微信支付-我遇到的那些问题
  3. PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
  4. 用c语言读取和写入文件数据
  5. javascript返回上一页的三种写法
  6. 付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
  7. elasticsearch 二、elasticsearch-head安装
  8. 看“意大利文艺复兴艺术展”(1)
  9. 9012教你如何使用gulp4开发项目脚手架
  10. MySQL_数据库表记录的操作
  11. Oracle 备份shell,oracle数据库shell备份脚本
  12. Flex中实现Tree绑定数据后自动展开节点
  13. python runner_【httprunner】自动化测试入门(基于python)!
  14. PPAPI插件与浏览器的通信
  15. win10如何开启自带虚拟机
  16. 【Pandas】Pandas求某列字符串的长度,总结经验教训
  17. 详解 Secondary NameNode
  18. vue keys detected: '1111'. This may cause an update error.
  19. python中的类和对象2
  20. 抢鞋软件bot服务器系统,抢鞋子bot机器人有用吗 抢鞋子用什么APP

热门文章

  1. 索引顺序表查找算法(分块查找)
  2. 解决:Docker 运行镜像创建容器后,使用docker ps 没有显示正在运行的容器
  3. 保存图片到手机相册,并通知图库更新
  4. 项目管理与过程管理的区别
  5. Word 2007 文本粘贴快捷键及无法输入西文引号在方框里打勾等问题
  6. 骚扰电话何时休,电话机器人发展限制如何解除
  7. c++文件读写函数eof()会错误的问题
  8. [转载] Python中format函数用法
  9. COMSOLE/FreeCAD接触对使用
  10. MySQL 数据库实验二