이것도 알아야 하네?
[Python] OpenCV 예제 따라하기—1. 이미지 합성 본문
728x90
지난 시간까지 이미지를 읽고, 보고, 저장하는 방법을 배웠습니다.
해당 예제를 확인하고 싶다면
⬇⬇⬇⬇⬇⬇
OpenCV 예제 따라하기 시리즈
Goal
이번 시간에는 OpenCV 모듈을 이용하여, 두 이미지를 합성하는 방법을 배웁니다.
1. 이미지 합성
cv2.add() 함수를 이용하여 이미지 파일를 합성합니다. 중요한 점은 이미지 픽셀은 0~255 사이의 값을 가지는 특성에 따라, 두 이미지 픽셀 값을 덧셈 연산 후 255 값을 넘는 값에 대해서 모두 255 값을 가지게 합니다. 그러므로 두 numpy.ndarray 타입의 객체 행렬을 단순히 덧셈 연산한 것과는 결과가 달라집니다. 만약, numpy.ndarray타입 연산을 가지고 동일한 결과를 가지게 하고 싶다면, 이미지 객체 행렬 dtype을 float으로 변경한 후 덧셈 연산을 진행하고 numpy.clip함수를 이용하여 값을 한정시킬 수 있습니다. dtype을 float으로 변경하지 않는 경우 overflow 현상이 발생하여 modulo 연산이 발생할 수 있습니다.
cv2.add(imageObject1, imageObject2) |
Returns
합성된 image객체 행렬을 numpy.ndarray 타입으로 반환합니다.
Parameters
- imageObject1/imageObject2 (Required): 합치고 싶은 두 이미지 객체행렬로 순서 상관없이 cv2.imread()의 반환값을 입력하면 됩니다.
> Code
import cv2
img1 = cv2.imread('/file_load_path/FILE_NAME1.jpg')
img2 = cv2.imread('/file_load_path/FILE_NAME2.jpg')
result = cv2.add(img1, img2)
> Result
img1 | img2 | result |
합성이 이상하게 진행되어 보이는 이유는 앞서 언급했다시피 덧셈 연산 시 255 넘는 값에 대해서 모두 255으로 치환되기 때문입니다. 두 이미지 모두 밝은 이미지로 높은 픽셀 값들을 가지고 있었기 때문에, 합산된 이미지의 픽셀은 대부분 255(흰 색)에 가까워 희게 보이게 됩니다.
728x90
'프로그래밍 > 이미지 처리' 카테고리의 다른 글
[Python] OpenCV 예제 따라하기—2. 흑백 이미지로 변환 (0) | 2021.11.12 |
---|---|
[Python] OpenCV 예제 따라하기—0. 이미지 읽고 쓰기 (0) | 2021.10.31 |
Comments