創建項目 | 文件與顯示 | 像素操作 | 圖像彩色類型轉換 | 模糊、平滑、去噪 | 銳化、邊緣檢測 | 二值化 | 形態學 | 位置變換 | 直方圖 | 霍夫變換 | 圖像優化 | 圖像分割
在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);