본문 바로가기
프로그래밍/OPENCV

[OPENCV]이미지 비트연산_bitwise_and, bitwise_or, add

by 루티즈 2019. 11. 27.
반응형

이미지 비트연산함수_bitwise_and, bitwise_or, add 차이

<opencv2/core.hpp>

bitwise_and

> void bitwise_and(InputArray src1, InputArray src2,

                 OutputArray dst, InputArray mask = noArray());

> mask 범위 내에서 두개의 array (src1, src2) 의 비트연산 and(&) 결과

> 비트연산 and 두 개의 값이 모두 True 일 때 True, 그렇지 않을 때 false 

bitwise_or

> void bitwise_or(InputArray src1, InputArray src2,

                OutputArray dst, InputArray mask = noArray());

mask 범위 내에서 두개의 array (src1, src2) 의 비트연산 or(|) 결과

> 비트연산 or 두 개의 값 중 한개라도 True 일 때 True, 그렇지 않을 때 false 

add

> void add(InputArray src1, InputArray src2, OutputArray dst,
         InputArray mask = noArray(), int dtype = -1);
mask 범위 내에서 두개의 array (src1, src2) 의 합계산 결과



특정한 영역의 타원만을 복사하는 예제에 대해서

이미지의 특정한 영역에 대해 3개의 함수가 같은 결과를 가지기 위해서는

1
2
3
4
5
6
7
8
9
10
11
12
13
    Mat dst1, dst2, dst3(image.size(), CV_8UC3, Scalar(000)); 
    Mat mask(image.size(), CV_8U, Scalar(0)); 
    Mat black(image.size(), CV_8UC3, Scalar(0));
    
    Point center(120120); 
    ellipse(mask, center, Size(5070), 00360, Scalar(255), -1);
 
    bitwise_and(image, image, dst1, mask);
    bitwise_or(black, image, dst2, mask);
    add(black, image, dst3, mask);
cs

그리고 결과는 다음과 같다.

1. bitwise_and



2. bitwise_or


3. add


의도와 같이 동일한 이미지를 획득할 수 있다.

반응형