创建项目 | 文件与显示 | 像素操作 | 图像彩色类型转换 | 模糊、平滑、去噪 | 锐化、边缘检测 | 二值化 | 形态学 | 位置变换 | 直方图 | 霍夫变换 | 图像优化 | 图像分割
在OpenCvSharp里面,图像一般使用Mat对象存储。Mat即矩阵,矩阵的每一项是一个MatType结构。MatType有CV_16SC4、CV_8UC3、CV_8UC1等,可以看到,类型皆由四部分组成,定义如下:
8 | U | C | 3 |
每通道的字节数 | 每通道的数据类型 | 固定为C,指Channel | 通道数 |
例如,一般的无透明彩色图,每一格像素包含了RGB三个通道,所以其类型为8UC3,如果还包含透明度信息,则选用8UC4类型。
一、读取像素
Mat src = new Mat(img_green);
for (int i = 0; i < src.Width; i++)
{
for (int j = 0; j < src.Height; j++)
{
Vec3b color = src.Get<Vec3b>(j, i);
//B: color.Item0, G: color.Item1, R: color.Item2
}
}
需要注意的是,一般的图像颜色排布是BGR,不是RGB。
二、写入像素
Mat src = new Mat(img_green);
for (int i = 0; i < src.Width; i++)
{
for (int j = 0; j < src.Height; j++)
{
if (i < 10)
{
src.Set<Vec3b>(j, i, new Vec3b(255, 0, 0));
}
}
}
src.SaveImage(img_result);