OpenCV | 마스크 연산

박나연·2021년 3월 17일
0

OpenCV

목록 보기
15/40

SetTo()

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 한다.


CopyTo()

파라미터로 (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이 아닌 인덱스위치에 카피한다.

profile
Data Science / Computer Vision

0개의 댓글