OpenCV Mat 표현에서 픽셀 채널 값 검색
OpenCV Mat 이미지 내의 특정 픽셀에 대한 채널 값을 얻으려면 다음을 활용할 수 있습니다. 다음 방법:
방법 1: 사용 OpenCV의 Vec3b
세 개의 채널(파란색, 녹색, 빨간색)을 포함하는 CV_8UC3 유형의 Mat 이미지의 경우 Vec3b 데이터 구조를 사용할 수 있습니다.
for(int i = 0; i < foo.rows; i++) { for(int j = 0; j < foo.cols; j++) { Vec3b bgrPixel = foo.at<Vec3b>(i, j); // Access individual channel values: uint8_t blue = bgrPixel[0]; uint8_t green = bgrPixel[1]; uint8_t red = bgrPixel[2]; } }
방법 2: 직접 버퍼 액세스
성능 향상을 위해, 이미지 데이터 버퍼에 대한 직접 액세스를 활용할 수 있습니다:
uint8_t* pixelPtr = (uint8_t*)foo.data; int cn = foo.channels(); // Number of channels per pixel for(int i = 0; i < foo.rows; i++) { for(int j = 0; j < foo.cols; j++) { // Retrieve channel values: uint8_t blue = pixelPtr[i*foo.cols*cn + j*cn + 0]; uint8_t green = pixelPtr[i*foo.cols*cn + j*cn + 1]; uint8_t red = pixelPtr[i*foo.cols*cn + j*cn + 2]; } }
참고: OpenCV는 내부적으로 RGB가 아닌 BGR(파란색, 녹색, 빨간색) 형식으로 픽셀 데이터를 저장합니다.
위 내용은 OpenCV Mat 이미지에서 픽셀 채널 값에 효율적으로 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!