close

接續上一篇<Adding some noise to an image Using OpenCV 2.4.6 with Qt5>

利用iterator進行整張影像的像素掃描

AddNoiseQt5OpenCV246目錄夾複製一份

並另存成ScanlineQt5OpenCV246

開啟專案ScanlineQt5OpenCV246.pro

ImageUtility.cpp

src.at<cv::Vect3b>(j, i)[0]改成pointer方式接收

先宣告 uchar* ptr = src.ptr(j), 表示接收第j列的像素起始記憶體位置, 由於每一個像素是RGB各占一個byte,

所以每移動一行(column),跳三個byte, 所以第i行的像素如何取出呢? 如下:

ptr[3*i]     藍色像素

ptr[3*i+1] 綠色像素

ptr[3*i+2] 紅色像素

 

同理, 灰階影像只會一次跳一個byte

src.at<uchar>(j, i) = value

改成

uchar* ptr = src.ptr(j), 表示接收第j列的像素起始記憶體位置

ptr[i] 就可以直接取到第i行的像素值

 

按下<開啟圖片>,點選 Caraunt HM550.jpg

按下<彩色雜訊>

按下<RGB2Gray>

按下<灰階雜訊>

按下<灰階等化>

 

 download sample code: ScanlineQt5OpenCV246

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()