Để đọc giá trị của một pixel cụ thể, chúng ta có thể sử dụng phương pháp at hoặc phương pháp truy cập trực tiếp. Bài viết này sẽ trình bày cả hai cách tiếp cận.
Phương pháp 'at'
Chương trình sau đọc giá trị pixel tại vị trí (10, 29) của một ảnh RGB.
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
Mat image;
image = imread("sky.jpg");
int x = image.at<Vec3b>(10, 29)[0];
int y = image.at<Vec3b>(10, 29)[1];
int z = image.at<Vec3b>(10, 29)[2];
cout << "Gia tri kenh blue: " << x << endl;
cout << "Gia tri kenh green: " << y << endl;
cout << "Gia tri kenh red: " << z << endl;
system("pause");
return 0;
}
Kết quả

Kết quả sẽ hiển thị trên cửa sổ console. Ba dòng sau lấy giá trị pixel của ba kênh khác nhau:
int x = image.at<Vec3b>(10, 29)[0]; int y = image.at<Vec3b>(10, 29)[1]; int z = image.at<Vec3b>(10, 29)[2];
Dòng đầu tiên đọc giá trị pixel tại (10, 29) của kênh đầu tiên (blue) và lưu vào biến 'x'. Dòng thứ hai và thứ ba lưu giá trị của kênh thứ 2 và thứ 3 tương ứng.
Phương pháp 'truy cập trực tiếp'
Chương trình sau đọc giá trị pixel tại (10, 29) trực tiếp:
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
Mat_<Vec3b> image;
image = imread("sky.jpg");
Vec3b x = image(10, 29);
cout << x << endl;
system("pause");
return 0;
}
Kết quả
