close
接續上一篇<Adding some noise to an image Using OpenCV 2.4.6 with Qt5>
利用iterator進行整張影像的像素掃描
將AddNoiseQt5OpenCV246目錄夾複製一份
開啟專案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
全站熱搜
留言列表