K 개발자
이미지 연산 본문
영상과 영상의 연산
- dest = cv2.add(src1, src2 [, dest, mask, dtype]) : src1과 src2 더하기
- src1 : 입력 영상 1 또는 수
- src2 : 입력 영상 2 또는 수
- dest : 출력 영상
- mask : 0이 아닌 픽셀만 연산
- dtype : 출력 dtype
- dest = cv2.substract(src1, src2 [, dest, mask, dtype]) : src1에서 src2를 빼기
- 모든 인자는 cv2.add() 함수와 동일
- dest = cv2.multiply(src1, src2 [, dest, scale, dtype]) : src1과 src2를 곱하기
- scale : 연산 결과에 추가 연산할 값
- dest = cv2.divide(src1, src2 [, dest, scale, dtype]) : src1을 src2로 나누기
- 모든 인자는 cv2.multiply()와 동일
알파 블렌딩
- cv2.addWeight(img1, alpha, img2, beta, gamma)
- img1, img2 : 합성할 두 영상
- alpha : img1에 지정할 가중치(알파 값)
- beta : img2에 지정할 가중치, 흔히 (1-alpha) 적용
- gamma : 연산 결과에 가감할 상수, 흔히 0(zero) 적용
비트와이즈 연산
- bitwise_and(img1, img2, mask = None) : 각 픽셀에 대해 비트와이즈 AND 연산
- bitwise_or(img1, img2, mask = None) : 각 픽셀에 대해 비트와이즈 OR 연산
- bitwise_xor(img1, img2, mask = None) : 각 픽셀에 대해 비트와이즈 XOR 연산
- bitwise_not(img1, mask = None) : 각 픽셀에 대해 비트와이즈 NOT 연산
- img1, img2 : 연산 대상 영상, 동일한 shape
- mask : 0이 아닌 픽셀만 연산, 바이너리 이미지
차영상
- diff = cv2.absdiff(img1, img2)
- img1, img2 : 입력 영상
- diff : 두 영상의 차의 절대 값 반환
마스킹
색을 가지고 마스크를 만들어야 할 때, HSV로 변환하면 원하는 색상 범위의 것만 골라낼 수 있다.
- dest = cv2.inRange(img, from, to) : 범위에 속하지 않은 픽셀 판단
- img : 입력 영상
- from : 범위의 시작 배열
- to : 범위의 끝 배열
- dst : img가 from ~ to에 포함되면 255, 아니면 0을 픽셀 값으로 하는 배열
이미지 합성
- dst = cv2.seamlessClone(src, dst, mask, coords, flags [, output])
- src : 입력 영상, 일반적으로 전경
- dst : 대상 영상, 일반적으로 배경
- mask : 마스크, src에서 합성하고자 하는 영역은 255, 나머지는 0
- coodrs : src가 놓여지기 원하는 dst의 좌표(중앙)
- flags : 합성 방식
- cv2.NORMAL_CLONE : 입력 원본 유지
- cv2.MIXED_CLONE : 입력과 대상을 혼합
- output : 합성 결과
- dst : 합성 결과
Comments