using (Mat zx61 = new Mat("./data/test.jpg", ImreadModes.AnyColor)) {
//上一行代码可以用 Mat zx61 =Cv2.ImRead("./data/test.jpg", ImreadModes.AnyColor); 代替
using (new Window("zx61", WindowMode.AutoSize, zx61)) //新建一个窗口显示图片
{
Cv2.WaitKey(); //等待用户按键
}
}
Scalar s = new Scalar(0, 0, 255);//创建一个颜色对象
using (Mat zx6161 = new Mat(100, 100, MatType.CV_32FC3, s))//行,列,矩阵数据类型(深度和通道数),图像颜色
{
using (new Window("zx6161", WindowMode.AutoSize, zx6161))
{
Cv2.WaitKey();//等待用户按键
}
}
using (var zx61 = new Mat("./data/test.jpg", ImreadModes.AnyColor ))
using (var zx6161 = new Mat(zx61.Size(), zx61.Type(), Scalar.All(0)))//大小,类型,颜色
{
//zx6161.Create();//此处伏笔,可以用来复制/合成图像等操作
//using (new Window("zx61", WindowMode.AutoSize, zx61))
Cv2.ImShow("zx61", zx61);//和上一行代码一个意思
using (new Window("zx6161", WindowMode.AutoSize, zx6161))
{
Cv2.WaitKey();
}
}
五/输出一个Mat对象的所有像素值
/// <summary>
/// 输出一个Mat对象的所有像素值
/// tip:执行过程非常快但是 WriteLine 比较耗时....所以你感觉得慢是假象...
/// </summary>
/// <param name="path"></param>
public static void getpixel1(string path)
{
Mat zx61 = new Mat(path, ImreadModes.AnyColor | ImreadModes.AnyDepth);
for (int i = 0; i < zx61.Height; i++)
{
for (int j = 0; j < zx61.Width; j++)
{
Vec3b color = zx61.Get<Vec3b>(i, j); //new Vec3b(); 颜色通道类型(字节的三元组) ,直接视同Get泛型方法返回指定类型
//单独获取指定通道像素
//color.Item0= zx61.Get<Vec3b>(i, j).Item0; //R
//color.Item1 = zx61.Get<Vec3b>(i, j).Item1; //G
//color.Item2 = zx61.Get<Vec3b>(i, j).Item2; //B
Console.WriteLine(color.Item0 + "," + color.Item1 + "," + color.Item2);
}
}
Console.WriteLine($"图像高度:{zx61.Height}");
Console.WriteLine($"图像宽度:{zx61.Width}");
using (new Window("zx61", WindowMode.AutoSize, zx61))
{
Cv2.WaitKey();
}
}