一 :图像的颜色空间转换
在OpenCvSharp中颜色转换函数为:Cv2.CvtColor()
参数:
参数
说明
src:
源图像,8位无符号,16位无符号或单精度浮点
dst:
输出图像,具有与src相同的大小和深度
code:
颜色空间转换代码:(ColorConversionCodes)枚举类型
代码:
static void Main(string[] args)
{
Mat src = new Mat(@"C:\Users\whx\Desktop\opcvImage\s1.jpg ", ImreadModes.Color);
if (src == null) //上面的加载方式如果找不到指定的文件也会报错
{
Console.WriteLine("加载图像失败");
return;
}
Mat outImage = new Mat(); //声明一个容器,装载改变后的图像
//参数:1 原图矩阵容器 2:保存图像的矩阵容器 3:颜色转换通道(很多,查手册)
Cv2.CvtColor(src, outImage, ColorConversionCodes.RGB2GRAY); //转为灰度空间图像,
//参数:1 要保存图片的路径 2:图像的矩阵容器 ,(图片保存格式个根据自定义的后缀名)
Cv2.ImWrite(@"C:\Users\whx\Desktop\out.png", outImage);//保存到桌面
using (new Window("src", WindowMode.Normal, src))
using (new Window("out", WindowMode.Normal, outImage))
{
Cv2.WaitKey();
}
}
左边是源图像,右边是转为灰度空间的图像,保存路径在桌面。
转为灰度空间的类型在 OpenCvSharp 中的 ColorConversionCodes.RGB2GRAY 与 ColorConversionCodes.BRR2GRAY 都能实现,OpenCvSharp 加载进来的图像是哪一种?
代码
static void Main(string[] args)
{
#region
//自定义一张全红色的图片
Mat src = new Mat(100,100,MatType.CV_8UC3,new Scalar(0,0,255));
Vec3b vec3B = new Vec3b();
//获取第一个像素的三通道像素值
vec3B.Item0 = src.At(0, 0)[0];
vec3B.Item1 = src.At(0, 0)[1];
vec3B.Item2 = src.At(0, 0)[2];
Console.WriteLine("0 :"+vec3B.Item0); //控制台输出
Console.WriteLine("1 :"+vec3B.Item1);
Console.WriteLine("2 :"+vec3B.Item2);
using (new Window("src image