C#+OpenCV基础(一)_加载创建复制保存图片
1.C#+OpenCV学习笔记(目录)-目录
2.C#+OpenCV基础(一)_加载创建复制保存图片
3.C#+OpenCV基础(二)_灰度化二值化4.C#+OpenCV基础(三)_修改高宽剪切拼接缩放5.C#+OpenCV基础(四)_旋转翻转透视6.C#+OpenCV基础(五)_添加边框7.C#+OpenCV基础(六)_均值中值高斯双边滤波8.C#+OpenCV基础(七)_图像金字塔9.C#+OpenCV基础(八)_获取修改图片亮度10.C#+OpenCV基础(九)_拆分合并图层11.C#+OpenCV基础(十)_灰度变化与直方图12.C#+OpenCV基础(十一)_图片基础计算13.C#+OpenCV基础(十二)_图片形态学计算14.C#+OpenCV基础(十三)_图片白平衡矫正15.C#+OpenCV基础(十四)_绘制像素、图形、文字16.C#+OpenCV基础(十五)_图像的基础分割方法17.C#+OpenCV基础(十六)_识别圆、直线、斑点、轮廓18.C#+OpenCV基础(十七)_计算图片相似度19.C#+OpenCV基础(十八)_模版匹配20.C#+OpenCV进阶(一)_人体识别21.C#+OpenCV进阶(二)_文字识别22.C#+OpenCV进阶(三)_操作摄像头与视频文件23.C#+OpenCV进阶(四)_录屏24.C#+OpenCV实战(一)_图片简易角度矫正25.C#+OpenCV实战(二)_春天转秋天26.C#+OpenCV实战(三)_玉米粒计数27.C#+OpenCV实战(四)_特定钢板缺陷检测1、加载
(1)加载彩图
/// <summary>
/// 加载图片
/// ImreadModes.AnyColor:任意图像
/// ImreadModes.Color:三通道
/// ImreadModes.Grayscale:灰度图
/// </summary>
/// <param name="imgPath">图片路径</param>
public static Mat LoadImg(string imgPath, ImreadModes mode = ImreadModes.AnyColor)
{
return new Mat(imgPath, mode);
}
(2)加载灰度图
/// <summary>
/// 加载图片 - 灰度图片
/// </summary>
/// <param name="imgPath">图片路径</param>
public static Mat LoadImg_GRAY(string imgPath)
{
return new Mat(imgPath, ImreadModes.Grayscale);
}
2、创建
(1)常见方式
Mat mat1 = new Mat();
Mat mat1 = new Mat(width, height, MatType.CV_8UC1); // 宽,高,样式
(2)创建全零矩阵
Mat mat2=Mat.Zeros(mat1.Size(), mat1.Type());
(3)创建全1矩阵
Mat kernel = Mat.Ones(10, 10, MatType.CV_8UC1);
(4)创建一张纯色或雪花图片
/// <summary>
/// 创建一张图片
/// 纯色、随机雪花
/// </summary>
/// <param name="w">宽</param>
/// <param name="h">高</param>
/// <param name="isSolidColor">是否是纯色;true=纯色,false=随机雪花</param>
/// <param name="scalar">纯色时的颜色;Scalar.White 或Scalar.FromVec3b(new Vec3b() { Item0=0,Item1=0,Item2=0})</param>
/// <returns></returns>
public static Mat CreateImg(int width, int height, bool isSolidColor, Scalar scalar)
{
if (isSolidColor)
{
Mat mat = new Mat(width, height, MatType.CV_8UC1, scalar); //
return mat;
}
else
{
Mat mat = new Mat(width, height, MatType.CV_8UC1); //
Random random = new Random();
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
byte blue = (byte)(random.NextDouble() * 256);
byte green = (byte)(random.NextDouble() * 256);
byte red = (byte)(random.NextDouble() * 256);
Vec3b color = new Vec3b(blue, green, red);
mat.At<Vec3b>(i, j) = color;
}
}
return mat;
}
}
3、复制(深复制)
Mat dstMat = new Mat();
mat.CopyTo(dstMat); // 图像mat深层复制给图像dstMat
4、保存
/// <summary>
/// 保存图片
/// </summary>
/// <param name="imgPath">图片路径</param>
public static bool SaveImg(Mat mat, string imgPath)
{
return mat.SaveImage(imgPath);
}
本文来自博客园,作者:꧁执笔小白꧂,转载请注明原文链接:https://www.cnblogs.com/qq2806933146xiaobai/p/18294219
合集:
C#+机器视觉OpenCV
分类:
C#+机器视觉OpenCV
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2021-07-10 layui的table.render使用
2019-07-10 html根据下拉框选中的值修改背景颜色