void mask_setTo() {
Mat src = imread("lenna.bmp", IMREAD_COLOR);
Mat mask = imread("mask_smile.bmp", IMREAD_GRAYSCALE);
if (src.empty() || mask.empty()) {
cerr << "Image load failed!" << endl;
return;
}
src.setTo(Scalar(0, 255, 255), mask);
// 픽셀값이 0이 아닌 위치에서만 src 영상 픽셀을 노란색으로 설정
imshow("src", src);
imshow("mask", mask);
waitKey();
destroyAllWindows();
}
mask 이미지를 그레이 스케일로 변환하고, mat에서 0이 아닌 값들이 있는 위치에 src 에서 노란색으로 바꾸어 show 한다.
파라미터로 (OutputArray m, InputArray mask) 를 받고, mask 는 행렬 원소 값이 0이 아닌 좌표에서만 행렬 원소를 복사하게 된다.
void mask_copyTo() {
Mat src = imread("airplane.bmp", IMREAD_COLOR);
Mat mask = imread("mask_plane.bmp", IMREAD_GRAYSCALE);
Mat dst = imread("field.bmp", IMREAD_COLOR);
if (src.empty() || mask.empty() || dst.empty()) {
cerr << "Image load failed!" << endl;
return;
}
src.copyTo(dst, mask);
imshow("dst", dst);
waitKey();
destroyAllWindows();
}
src 에서 dst이미지 위에 mask 이미지에서 0이 아닌 인덱스위치에 카피한다.