카테고리 없음

OpenCV 산술 및 논리 연산

염지미 2023. 9. 8. 18:26

1. 덧셈 연산

cv2.add(src1, src2, dst=None, mask=None, dtype=None) -> dst

 src1 : (입력) 첫 번째 영상 또는 스칼라

 src2 : (입력) 두 번째 영상 또는 스칼라

 dst : (출력) 덧셈 연산의 결과 영상

 mask : 마스크 영상

 dtype : 출력 영상(dst)의 타입. cv2.CV_8U, cv2.CV_32F 등

 

2. 가중치 합

cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None) -> dst

 src1 : 첫 번째 영상

alpha : 첫 번째 영상 가중치

src2 : 두 번째 영상. src1과 같은 크기 & 같은 타입

 beta : 두 번째 영상 가중치

gamma : 결과 영상에 추가적으로 더할 값

dst : 가중치 합 결과 영상

dtype : 출력 영상의 타입

 

3. 뺄셈 연산

cv2.substract(src1, src2, dst=None, mask=None, dtype=None) -> dst

 src1 : (입력) 첫 번째 영상 또는 스칼라

 src2 : (입력) 두 번째 영상 또는 스칼라

 dst : (출력) 뺄셈 연산의 결과 영상

 mask : 마스크 영상

 dtype : 출력 영상(dst)의 타입. cv2.CV_8U, cv2.CV_32F 등

 

4. 차이 연산

cv2.absdiff(src1, src2, dst=None, dtype=None) -> dst

 src1 : 첫 번째 영상 또는 스칼라

 src2 : 두 번째 영상 또는 스칼라

 dst : 차이 연산의 결과 영상

 

5. 비트 연산

cv2.bitwise_and(src1, src2, dst=None, mask=None) -> dst
cv2.bitwise_or(src1, src2, dst=None, mask=None) -> dst
cv2.bitwise_xor(src1, src2, dst=None, mask=None) -> dst
cv2.bitwise_not(src1, dst=None, mask=None) -> dst

 src1 : 첫 번째 영상 또는 스칼라

 src2 : 두 번째 영상 또는 스칼라

 dst : 출력 영상

mask : 마스크 영상

 

 실습

import sys
import numpy as np
import cv2
from matplotlib import pyplot as plt
src1 = cv2.imread('lenna256.bmp', cv2.IMREAD_GRAYSCALE)
src2 = cv2.imread('square.bmp', cv2.IMREAD_GRAYSCALE)

if src1 is None or src2 is None:
    print('Image load failed!')
    sys.exit()
        
dst1 = cv2.add(src1, src2, dtype=cv2.CV_8U)
dst2 = cv2.addWeighted(src1, 0.5, src2, 0.5, 0.0)
dst3 = cv2.subtract(src1, src2)
dst4 = cv2.absdiff(src1, src2)

# subplot(row, col, index)
plt.subplot(231), plt.axis('off'), plt.imshow(src1, 'gray'), plt.title('src1')
plt.subplot(232), plt.axis('off'), plt.imshow(src2, 'gray'), plt.title('src2')
plt.subplot(233), plt.axis('off'), plt.imshow(dst1, 'gray'), plt.title('add')
plt.subplot(234), plt.axis('off'), plt.imshow(dst2, 'gray'), plt.title('addWeighted')
plt.subplot(235), plt.axis('off'), plt.imshow(dst3, 'gray'), plt.title('subtract')
plt.subplot(236), plt.axis('off'), plt.imshow(dst4, 'gray'), plt.title('absdiff')

plt.show()

 결과