소스 뷰어
- cv2.add(src1, src2[, dst[, mask[, dtype]]]) : 두 개의 배열 혹은 배열과 스칼라의 각 원소 간 합을 계산
- src1 : 첫 번째 입력 배열 혹은 스칼라
- src2 : 두 번째 입력 배열 혹은 스칼라
- dst : 계산된 결과의 출력 배열
- mask : 연산 마스크 : 0이 아닌 마스크 원소의 위치만 연산 수행(8비트 단일 채널)
- dtype : 출력 배열의 깊이
- cv2.subtract(src1, src2[, dst[, mask[, dtype]]]) : 두 개의 배열 혹은 배열과 스칼라의 각 원소 간 차분을 계산한다.
- add() 함수와 인수 동일
- cv2.multiply(src1, src2[, dst[, scale[, dtype]]]) : 두 배열의 각 원소 간 곱을 계산
- scale : 두 배열의 원소 간 곱할 때 추가로 곱해주는 배율
- cv2.divide(src1, src2[, dst[, scale[, dtype]]]) : 두 배열의 각 원소 간 나눗셈을 수행
- cv2.divide(scale, src2[, dst[, dtype]]) : 스칼라값과 행렬 원소 간 나눗셈을 수행
- cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) : 두 배열의 각 원소에 가중치를 곱한 후에 가중된(weighted) 합을 계산
- alpha : 첫 번째 배열의 모든 원소에 대한 가충치
- beta : 두 번째 배열의 모든 원소에 대한 가충치
- gamma : 두 배열의 원소 간 합에 추가로 더해주는 스칼라
import numpy as np, cv2
m1 = np.full((3, 6), 10, np.uint8) # 단일 채널 생성 및 초기화
m2 = np.full((3, 6), 50, np.uint8)
m_mask = np.zeros(m1.shape, np.uint8) # 마스크 생성
m_mask[ :, 3: ] = 1
m_add1 = cv2.add(m1, m2) # 행렬 덧셈
m_add2 = cv2.add(m1, m2, mask=m_mask) # 관심 영역만 덧셈 수행
# 행렬 나눗셈 수행
m_div1 = cv2.divide(m1, m2)
m1 = m1.astype(np.float32) # 형변환 - 소수 부분 보존
m2 = np.float32(m2)
m_div2 = cv2.divide(m1, m2)
titles = ['m1', 'm2', 'm_mask','m_add1','m_add2','m_div1', 'm_div2']
for title in titles:
print("[%s] = \n%s \n" % (title, eval(title)))