在C#中初测OpencvSharp4
一、配置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
一、配置OpenCV 首先,我们新建一个工程,然后就是给这个工程配置OpenCV了,最简单的方法还是Nuget,来我们右键一个Nuget: 打开Nuget后,你可以直接输入OpenCVSharp4来查找,当然,如果你…...
洛谷P1123 取数游戏(C++)(DFS)
目录 1.题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 2.AC 1.题目 题目描述 一个N \times MNM的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻88个格…...
Python Qt6快速入门-嵌入PyQtGraph图表
嵌入PyQtGraph 文章目录 嵌入PyQtGraph1、PyQtGraph介绍2、创建PyQtGraph小部件3、绘图样式配置3.1 背景颜色3.2 线条颜色、线宽和样式配置3.3 线标记(Line Markers)3.4 绘制标题3.5 轴标题3.6 图例(Legends)3.7 轴范围限制3.8 绘制多组数据3.10 画布清空4、更新数据5、总结1、…...
Mac电脑_GitHub提交项目至仓库
第一步(准备工作): Mac 电脑自带 git , 无需安装 1. 创建一个项目 demo1 在 github 上 2. 创建 ssh 密钥 打开终端: ssh-keygen -t rsa -C "your_emailyouremail.com" 此处输入两次密码, 直接…...
Android自定义View实现横向的双水波纹进度条
效果图:网上垂直的水波纹进度条很多,但横向的很少,将垂直的水波纹改为水平的还遇到了些麻烦,现在完善后发布出来,希望遇到的人少躺点坑。思路分析整体效果可分为三个,绘制圆角背景和圆角矩形,绘…...
Python 之 Pandas 分组操作详解和缺失数据处理
文章目录一、groupby 分组操作详解1. Groupby 的基本原理2. agg 聚合操作3. transform 转换值4. apply二、pandas 缺失数据处理1. 缺失值类型1.1 np.nan1.2 None1.3 NA 标量2. 缺失值处理2.1 查看缺失值的情形2.2 缺失值的判断2.3 删除缺失值2.4 缺失值填充在开始之前ÿ…...
【人工智能 AI】什么是人工智能? What is Artificial Intelligence
目录 Introduction to Artificial Intelligence人工智能概论 What is Artificial Intelligence? 什么是人工智能?...
17、触发器
文章目录1 触发器概述2 触发器的创建2.1 创建触发器语法2.2 代码举例3 查看、删除触发器3.1 查看触发器3.2 删除触发器4 触发器的优缺点4.1 优点4.2 缺点4.3 注意点尚硅谷MySQL数据库教程-讲师:宋红康 我们缺乏的不是知识,而是学而不厌的态度 在实际开发…...
内核并发消杀器(KCSAN)技术分析
一、KCSAN介绍KCSAN(Kernel Concurrency Sanitizer)是一种动态竞态检测器,它依赖于编译时插装,并使用基于观察点的采样方法来检测竞态,其主要目的是检测数据竞争。KCSAN是一种检测LKMM(Linux内核内存一致性模型)定义的数据竞争(data race)的工…...
蓄水池抽样算法
蓄水池抽样,也称水塘抽样,是随机抽样算法的一种。基本抽样问题有一批数据(假设为一个数组,可以逐个读取),要从中随机抽取一个数字,求抽得的数字下标。常规的抽样方法是,先读取所有的…...
数据结构预算法之买股票最好时机动态规划(可买卖多次)
一.题目二.思路在动规五部曲中,这个区别主要是体现在递推公式上,其他都和上一篇文章思路是一样的。所以我们重点讲一讲递推公式。这里重申一下dp数组的含义:dp[i][0] 表示第i天持有股票所得现金。dp[i][1] 表示第i天不持有股票所得最多现金如…...
华为OD机试真题Java实现【蛇形矩阵】真题+解题思路+代码(20222023)
蛇形矩阵 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11请注意本题含有多组样例输入。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Java)真题目录汇总 输入描述:…...
spring Bean的生命周期 IOC
文章目录 1. 基础知识1.1 什么是 IoC ?2. 扩展方法3. 源码入口1. 基础知识 1.1 什么是 IoC ? IoC,控制反转,想必大家都知道,所谓的控制反转,就是把 new 对象的权利交给容器,所有的对象都被容器控制,这就叫所谓的控制反转。 IoC 很好地体现了面向对象设计法则之一 —…...
详解cors跨域
文章目录同源策略cors基本概念cors跨域方式简单请求 simple request非简单请求- 预检请求CORS兼容情况CORS总结同源策略 在以前的一篇博客中有介绍,同源策略是一种安全机制,为了预防某些恶意的行为,限制浏览器从不同源文档和脚本进行交互的行…...
ARM uboot 源码分析7 - uboot的命令体系
一、uboot 命令体系基础 1、使用 uboot 命令 (1) uboot 启动后进入命令行环境下,在此输入命令按回车结束,uboot 会收取这个命令然后解析,然后执行。 2、uboot 命令体系实现代码在哪里 (1) uboot 命令体系的实现代码在 uboot/common/cmd_xx…...
物理服务器与云服务器备份相同吗?
自从云计算兴起以来,服务器备份已经从两阶段的模拟操作演变为由云服务器备份软件执行的复杂的多个过程。但是支持物理服务器和虚拟服务器之间的备份相同吗?主要区别是什么?我们接下来将详细讨论这个问题。 物理服务器与云服务器备份的区别 如果您不熟悉虚拟服务器…...
【Linux】system V共享内存 | 消息队列 | 信号量
🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉system V共…...
FSC的宣传许可 答疑
【FSC的宣传许可 答疑】问:已经采购了认证产品但没有贴FSC标签,是否可以申请宣传许可?答:不可以。要宣传您采用了FSC认证产品的前提条件之一是产品必须是认证且贴有标签的。如果产品没有贴标,则不可申请宣传许可。您的…...
Leetcode力扣秋招刷题路-0100
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 100. 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是…...
协作对象死锁及其解决方案
协作对象死锁及其解决方案 1.前言 在遇到转账等的需要保证线程安全的情况时,我们通常会使用加锁的方式来保证线程安全,但如果无法合理的使用锁,很可能导致死锁。或者有时我们使用线程池来进行资源的使用,如调用数据库࿰…...
YOLO12应用场景:零售货架识别中商品计数+品类分类一体化方案
YOLO12应用场景:零售货架识别中商品计数品类分类一体化方案 1. 引言:零售货架管理的痛点与新解法 如果你经营过一家便利店、超市,或者负责过零售门店的运营,一定对“货架盘点”这件事深有感触。每到月底或者需要补货时ÿ…...
intv_ai_mk11生成效果:对‘提高工作效率’需求输出结构清晰、可执行的5条建议
intv_ai_mk11生成效果:对"提高工作效率"需求输出结构清晰、可执行的5条建议 1. 模型介绍与使用场景 intv_ai_mk11是一个基于Llama架构的中等规模文本生成模型,特别适合处理通用问答、文本改写、解释说明等任务。这个模型已经完成本地部署&am…...
C++ 地址空间随机化(ASLR):探讨 C++ 动态链接库在内存布局上的安全特性
尊敬的各位同仁,各位对系统安全和C编程充满热情的开发者们,大家下午好!今天,我们齐聚一堂,共同探讨一个在现代软件安全领域至关重要的主题——地址空间布局随机化(ASLR),特别是它如何…...
MOS管选型实战指南
MOS管(金属氧化物半导体场效应晶体管)是现代电力电子和开关电路的核心元件。选型失误的后果往往是灾难性的——效率低下、发热严重、驱动振荡、甚至炸管冒烟。相比电阻电容,MOS管的选型需要权衡的维度更多:电压、电流、导通电阻、开关速度、驱动电压、热阻、体二极管特性……...
一键捕获完整网页:Full Page Screen Capture 高效解决方案
一键捕获完整网页:Full Page Screen Capture 高效解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-e…...
光流法在气象雷达中的应用:从原理到外推实践
光流法在气象雷达中的应用:从原理到外推实践 气象雷达作为现代气象监测的核心工具,其回波数据蕴含着丰富的天气系统动态信息。如何从这些看似静态的图像序列中提取运动规律,进而预测未来短时内的天气变化,一直是气象学界和工程界关…...
快马AI助力:十分钟用Python搭建免费股票行情网站原型
最近想验证一个股票行情网站的原型,但作为独立开发者,从零搭建前后端实在太耗时。尝试用PythonFlask快速实现,结合InsCode(快马)平台的AI辅助功能,居然十分钟就完成了基础框架。记录下关键实现思路: 数据获取层设计 选…...
从 14 万美元支付事故看:AI 写的代码过了所有测试,为什么活不过生产?
我审计过的一家科技公司,曾因一段 AI 生成的异步支付处理代码,遭遇了一场灾难性的生产事故。这段代码完美通过了所有自动化检查、单元测试与集成测试,标注着「All checks passed」被顺利合并到生产环境,最终却触发了竞态条件与重复…...
AI 视频生成美女跳舞测评 | 顶级 Prompt实测版(Grok Imagine、Kling AI 3.0、Veo 3.1)
兄弟们,AI 视频生成已经卷到飞起了!之前写小黄文靠grok,现在生成“美女舞蹈”视频也得靠它。 今天上手实测截至今天热门的3款视频生成工具,专攻“美女跳舞”这个高难度场景:动作流畅度、人物一致性、性感画面感、提示…...
从芯片设计到产线测试:深入浅出聊聊DFT中的SCAN链设计与JTAG标准(含IEEE 1149.1)
从芯片设计到产线测试:深入浅出聊聊DFT中的SCAN链设计与JTAG标准(含IEEE 1149.1) 在芯片设计领域,可测试性设计(DFT)早已从"锦上添花"变成了"不可或缺"的核心环节。想象一下࿰…...
