OpenCV訪問畫素點的灰度值

2021-08-22 02:40:35 字數 2827 閱讀 3584

1.mat矩陣數值的儲存方式

這裡以指標的方式訪問影象素為例

(1)單通道

定義乙個單通道影象:

cv::mat img_1 = (320, 640, cv_8uc1, scalar(0));
對於單通道m(i,j)即為第i行j列的其灰度值;程式中表示為:

img_1.ptr(i)[j];
(2)多通道

這裡以rgb影象為例,每乙個子列依次為b、g、r,,第乙個分量是藍色,第二個是綠色,第三個是紅色。

定義乙個3通道bgr影象:

cv::mat img_1 = (320, 640, cv_8uc3, scalar(0, 0 ,0));
對於多通道m(i,j*3)即為第i行j列的b通道其灰度值,m(i,j*3+1) 即為第i行j列的g通道其灰度值,m(i,j*3+1) 即為第i行j列的b通     道其灰度值;程式中表示為:

第i行j列的b通道其灰度值:

img_1.ptr(i)[j*3];
第i行j列的g通道其灰度值:

img_1.ptr(i)[j*3+1];
第i行j列的r通道其灰度值:

img_1.ptr(i)[j*3+2];
2.示例程式,以三種方法(指標,at,迭代器)

獲得影象畫素值

#include #include #include #include #include #include using namespace std;

using namespace cv;

void get_setimagepixel3(char *imagepath, int x, int y)

else

imshow("cc", image);

}int main()

;

cout << "*********通過指標訪問畫素的灰度值********************" << endl;

//通過指標訪問畫素的灰度值

//單通道

cout << "45行,483列b通道灰度值" << int(img.ptr(45)[483*3]) << endl;

cout << "45行,483列g通道灰度值" << int(img.ptr(45)[483*3+1]) << endl;

cout << "45行,483列r通道灰度值" << int(img.ptr(45)[483*3+2]) << endl;

mat img_b(numrow, numcol, cv_8uc3, scalar(0, 0, 0));

mat img_g(numrow, numcol, cv_8uc3, scalar(0, 0, 0));

mat img_r(numrow, numcol, cv_8uc3, scalar(0, 0, 0));

for (int i = 0; i < numrow; i++)

}imshow("img", img);

imshow("img_b", img_b);

imshow("img_g", img_g);

imshow("img_r", img_r);

cout << endl;

cout << endl;

cout << endl;

cout << "*********at只適合灰度值為8位的影象********************" << endl;

//注意:at只適合灰度值為8位的影象

//單通道

mat img3(20, 30, cv_8uc1, scalar(0));

cout << "img(7,8)" << int(img3.at(7, 8)) << endl;

//多通道

mat img4(20, 30, cv_8uc3, scalar(0));

//bgr通道

cout << "b通道灰度值" << int(img4.at(3, 4)[0]) << endl;

cout << "g通道灰度值" << int(img4.at(3, 4)[1]) << endl;

cout << "r通道灰度值" << int(img4.at(3, 4)[2]) << endl;

waitkey(0);

system("pause");

return 0;

}

openCV畫素點處理

獲得畫素點的值便可以更加靈活的進行影象處理,在opencv裡可以通過cvget2d 和cvset2d 兩個函式加上乙個cvscalar結構體做到。opencv中,cvscalar結構為 typedef struct cvscalar cvscalar 4個double型變數,演算法處理時不至於被強制...

OpenCv畫素點獲取與修改

1 matlab獲取彩色影象畫素值的方法 三通道排序分別對應彩色影象的rgb三通道 2 opencv中獲取影象畫素的方法 方法一 注意記憶體中儲存順序是bgr 方法二 for int i 0 i img height i 假設灰度影象image,訪問其i行j列的象素可以這樣 cv image ele...

OpenCV 操作畫素(訪問畫素值)

為構建計算機視覺應用程式,我們需要學會訪問影象的內容,有時也要修改或者建立影象。本章將講講如何操作影象的元素 即畫素 影象本質上就是由陣列組成的矩陣。opencv使用了cv mat結構來操作影象。矩陣中的每乙個元素表示乙個畫素。對灰度影象而言,畫素是8位無符號數 資料型別為unsigned char...