해당 포스팅은 OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 (황선규 저)를 보고 공부하며 개인적인 용도를 위해 정리한 글이다.
논리 연산
- 픽셀값을 이진수로 표현하여 비트 단위의 논리 연산을 수행한다.
- 논리곱 (
AND), 논리합 (OR), 배타적 논리합 (XOR), 부정 (NOT) 을 지원한다. AND, OR, XOR은 두 입력 영상의 각 픽셀에 대한 연산을 실시하지만NOT은 하나의 입력 영상의 전체 픽셀을 일괄적으로 연산한다.- 연산자 오버로딩을 지원한다.
AND=&OR=|XOR=^NOT=~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "opencv2/opencv.hpp"
int main(void)
{
cv::Mat src1 = cv::imread("path/to/src1", cv::IMREAD_GRAYSCALE);
cv::Mat src2 = cv::imread("path/to/src2", cv::IMREAD_GRAYSCALE);
cv::Mat dst1, dst2, dst3, dst4;
cv::bitwise_and(src1, src2, dst1);
cv::bitwise_or(src1, src2, dst2);
cv::bitwise_xor(src1, src2, dst3);
cv::bitwise_not(src1, dst4);
cv::Mat images;
cv::hconcat(std::vector<cv::Mat>({dst1, dst2, dst3, dst4}), images);
cv::imshow("debug", images);
cv::waitKey();
cv::destroyAllWindows();
return 0;
}