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

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);
http://www.xdnf.cn/news/7600.html

相关文章:

  • 代码随想录算法训练营
  • Oracle基础知识
  • 绿色云计算:数字化转型与可持续发展的完美融合
  • C#学习第24天:程序集和部署
  • msq基础
  • 【Python装饰器深潜】从语法糖到元编程的艺术
  • leetcode 153. Find Minimum in Rotated Sorted Array
  • USB学习【13】STM32+USB接收数据过程详解
  • 跟踪AI峰会,给自己提出的两个问题。
  • 任务分配不均,如何平衡工作负担?
  • 服装收银系统哪个更优?秦丝进销存系统深度解析
  • 云原生攻防3(Docker常见攻击方式)
  • 武汉科技大学人工智能与演化计算实验室许志伟课题组参加第八届智能优化与调度学术会议
  • Riverpod应用场景分析
  • python文本处理 2024年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • 深挖navigator.webdriver浏览器自动化检测的底层分析
  • 考研系列-408真题计算机组成原理篇(2020-2023)
  • 六足连杆爬行机器人的simulink建模与仿真
  • PDF处理控件Aspose.PDF教程:以编程方式将 PDF 导出为 JPG
  • Python----循环神经网络(WordEmbedding词嵌入)
  • MCP Python SDK学习指南
  • HarmonyOS5云服务技术分享--账号登录文章整理
  • 栈和队列的模拟实现
  • 网络基础知识
  • 医疗影像中,DICOM点云、三角面片实体混合渲染(VR)
  • 单片机复用功能重映射Remap功能
  • 理解 RESTful 风格:现代 Web 服务的基石
  • 深入解析前端 JSBridge:现代混合开发的通信基石与架构艺术
  • Jules 从私有预览阶段推向全球公测
  • 【web应用】前后端分离开源项目联调运行的过程步骤ruoyi