R G B 색 성분을 각각 256단계로 표현
CV_8UC3 타입
BGR 순서를 기본으로 사용
Scalar(255)는 Scalar(255,0,0)과 동일 3채널 영상에 부적합
Mat dst = Scalar(255) - src;
Mat dst = Scalar(255, 255, 255) - src;
Mat dst = ~src;
dst.at<Vec3b>(y, x) = Vec3b(255, 255, 255) - src.at<Vec3b>(y, x);
ColorOp
데이터 저장 용량 감소, 연산 처리 속도 향상
색상 정보 손실
uchar gray = (uchar)(0.299 * r + 0.587 * g + 0.114 * b + 0.5);
실수 정수 연산을 통한 연산 속도 최적화
uchar gray = (uchar)((299 * r + 587 * g + 114 * b) / 1000);
shift 연산자를 통한 속도 최적화
#define RGB2GRAY(r, g, b) ((4899*(r) + 9617*(g) + 1868*(b)) >> 14)
dst.at<uchar>(y, x) = (uchar)RGB2GRAY(r, g, b);
OpenCV API
src : 입력 영상
dst : 출력 영상
code : 색 변환 코드
dstCn : 결과 영상 채널 수
void cvtColor(InputArray src,
OutputArray dst,
int code,
int dstCn = 0);
ColorOp