C# 使用 OpenCV 基础
一、C#安装OpenCV
安装上面两个模块
二、使用
- 导入
using OpenCvSharp;
- 加载图片
// 导入图片
Mat image = Cv2.ImRead(@"C:\x5.bmp");
// 拷贝
Mat image2 = image.Clone();// 打开窗口
Cv2.NamedWindow("image", WindowFlags.AutoSize);
// 显示图片
Cv2.ImShow("image", image);// 如果闪退写入下方代码
Cv2.WaitKey(0);
三、图片预处理
- 腐蚀
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);
- 膨胀
Cv2.Dilate(image, dstimage, elem);
Cv2.ImShow("dstimage", dstimage);
- 开运算
Cv2.MorphologyEx(image, dstimage, MorphTypes.Close, elem);
Cv2.ImShow("dstimage", dstimage);
- 闭运算
Cv2.MorphologyEx(image, dstimage, MorphTypes.Open, elem);
Cv2.ImShow("dstimage", dstimage);
- 进行均值滤波处理
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();
六、边缘化
- 处理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);
- 处理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);
- 合并 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);
七、图片转换
- 灰度图
Mat grayImage = new Mat();
Cv2.CvtColor(image, grayImage, ColorConversionCodes.BGR2GRAY);
Cv2.ImShow("灰度图", grayImage);