Pixel Access (픽셀 접근)
픽셀 접근은 이미지나 행렬에서 특정 위치의 픽셀 값을 읽거나 수정하는 작업을 말합니다. OpenCV에서는 Mat 클래스를 사용하여 이미지나 행렬을 나타내며, 다양한 방법으로 픽셀에 접근할 수 있습니다.
at 함수를 이용한 픽셀 접근:Mat 클래스의 at 함수를 사용하여 좌표를 지정하여 해당 픽셀의 값을 읽거나 수정할 수 있습니다.
Mat image = imread("example.jpg");
// 좌표 (x, y)의 픽셀 값을 읽어옴
Vec3b pixel = image.at<Vec3b>(y, x);
// 픽셀 값을 수정
pixel[0] = 255;
pixel[1] = 0;
pixel[2] = 0;
// 수정된 픽셀을 다시 이미지에 설정
image.at<Vec3b>(y, x) = pixel;
위의 코드에서 Vec3b는 3채널(BGR) 컬러 이미지에서 각 채널의 값을 나타내는 자료형입니다. at<Vec3b>은 해당 좌표의 픽셀 값을 Vec3b 형식으로 읽거나 수정합니다.
ptr 함수를 이용한 픽셀 접근:ptr 함수를 사용하면 한 행(row)의 시작 주소를 얻을 수 있고, 이를 이용하여 픽셀에 접근할 수 있습니다.
Mat image = imread("example.jpg");
for (int y = 0; y < image.rows; ++y) {
// 행의 시작 주소를 얻음
Vec3b* row_ptr = image.ptr<Vec3b>(y);
for (int x = 0; x < image.cols; ++x) {
// 해당 픽셀에 접근
Vec3b& pixel = row_ptr[x];
// 픽셀 값을 수정
pixel[0] = 255;
pixel[1] = 0;
pixel[2] = 0;
}
}
이러한 방법은 행 단위로 접근하여 작업할 때 유용하며, 픽셀의 연산이나 변경이 필요한 경우에 사용됩니다.
픽셀 접근은 이미지 처리에서 중요한 부분이며, 특히 OpenCV에서 다양한 연산 및 처리를 수행할 때 필수적인 작업입니다.