当前位置: 首页 > news >正文

C# 使用 OpenCV 基础

一、C#安装OpenCV

在这里插入图片描述
在这里插入图片描述
安装上面两个模块

二、使用

  1. 导入
using OpenCvSharp;
  1. 加载图片
// 导入图片
Mat image = Cv2.ImRead(@"C:\x5.bmp");
// 拷贝
Mat image2 = image.Clone();// 打开窗口
Cv2.NamedWindow("image", WindowFlags.AutoSize);
// 显示图片
Cv2.ImShow("image", image);// 如果闪退写入下方代码
Cv2.WaitKey(0);

三、图片预处理

  1. 腐蚀
Mat dstimage = new Mat();
Cv2.NamedWindow("dstimage", WindowFlags.AutoSize);
// 腐蚀
Mat elem = Cv2.GetStructuringElement(MorphShapes.Cross, new Size() { Width = 10, Height = 10 });
Cv2.Erode(image, dstimage, elem);
Cv2.ImShow("dstimage", dstimage);
  1. 膨胀
Cv2.Dilate(image, dstimage, elem);
Cv2.ImShow("dstimage", dstimage);
  1. 开运算
Cv2.MorphologyEx(image, dstimage, MorphTypes.Close, elem);
Cv2.ImShow("dstimage", dstimage);
  1. 闭运算
Cv2.MorphologyEx(image, dstimage, MorphTypes.Open, elem);
Cv2.ImShow("dstimage", dstimage);
  1. 进行均值滤波处理
Cv2.NamedWindow("dstimage", WindowFlags.AutoSize);
Cv2.Blur(image, dstimage, new Size() { Width = 10, Height = 10 });
Cv2.ImShow("dstimage", dstimage);

四、保存图片

Cv2.ImWrite(@"C:\001.bmp", image);

五、关闭窗口释放资源

Cv2.DestroyAllWindows();

六、边缘化

  1. 处理x方向的梯度
Mat gart_x = new Mat();
Mat abs_gart_x = new Mat();
// 输入图片, 输出图片, 处理的格式 16位有符号, 1.0 x方向的处理倒数
Cv2.Sobel(image, gart_x, MatType.CV_165, 1, 0);
// 对图片进行高亮处理
Cv2.ConvertScaleAbs(gart_x, abs_gart_x);
Cv2.ImShow("x方向", abs_gart_x);
  1. 处理y方向
Mat gart_y = new Mat();
Mat abs_gart_y = new Mat();Cv2.Sobel(image, gart_y, MatType.CV_165, 0, 1);
// 对图片进行高亮处理
Cv2.ConvertScaleAbs(gart_y, abs_gart_y);
Cv2.ImShow("x方向", abs_gart_y);
  1. 合并 x 和 y
Mat dst = new Mat();
// x的图像, x图像的权重, y的图像, y图像的权重
Cv2.AddWeighted(abs_gart_x, 0.5, abs_gart_y, 0.5, 0, dst);
Cv2.ImShow("合并", dst);

七、图片转换

  1. 灰度图
Mat grayImage = new Mat();
Cv2.CvtColor(image, grayImage, ColorConversionCodes.BGR2GRAY);
Cv2.ImShow("灰度图", grayImage);

相关文章:

  • spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler介绍
  • 【Fifty Project - D29】
  • 容器环境渗透测试工具(docker渗透测试工具、kubernetes)
  • 在CuPy中使用多节点多GPU环境
  • 2025年医美行业报告60+份汇总解读 | 附 PDF 下载
  • Golang的代码注释规范与实践
  • 【笔试强训day37】
  • 从 0 到 1 选对 AI 自动化平台,深度对比三大AI自动化平台:n8n vs Dify vs Coze(附选型指南与实战案例)
  • 简易的Java制作的c4爆炸倒计时程序
  • 时源芯微|接口滤波与防护电路的设计
  • 【课堂笔记】核方法和Mercer定理
  • 打造高效数据处理利器:用Python实现Excel文件智能合并工具
  • Java EE进阶1:导读
  • 科技赋能·长效治理|无忧树建筑修缮渗漏水长效治理交流会圆满举行!
  • Spring Boot 使用 jasypt配置明文密码加密
  • Canvas SVG BpmnJS编辑器中Canvas与SVG职能详解
  • 《经济日报》深度聚焦|珈和科技携手万果博览荟共筑智慧农业新示范高地 全链赋能蒲江茶果产业数字化转型升级
  • 01-通过纯js理解数据驱动图表概念
  • DeepSeek提示工程Prompt Engineering
  • 服务器操作系统时间同步失败的原因及修复
  • 海南省市监局与香港标准及检定中心签署合作协议,加快检验检测国际化
  • 国家发改委谈整治“内卷式”竞争:加力破除地方保护和市场分割,遏制落后产能无序扩张
  • 每一笔都是对的!再读周碧初画作有感
  • 首付款12.5亿美元!三生制药与辉瑞就国产双抗达成合作协议
  • 韦尔股份拟更名豪威集团:更全面体现公司产业布局,准确反映未来战略发展方向
  • 世卫大会连续九年拒绝涉台提案