基於OpenCvSharp的數字圖像處理 - 像素操作

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

完整示例項目

 

在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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章