Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python OpenCV로 배우는 이미지 산술 연산: 덧셈과 뺄셈 완벽 가이드

이 튜토리얼에서는 OpenCV를 사용하여 이미지에 다양한 산술 연산을 적용하는 방법을 알아봅니다. 덧셈, 뺄셈, 비트 연산(Bitwise Operations) 등 여러 연산을 이미지에 적용할 수 있으며, 지금부터 각 연산을 실제로 수행하는 방법을 하나씩 살펴보겠습니다.

이미지에 산술 연산을 적용하려면 먼저 OpenCV 모듈이 필요합니다. 터미널 또는 명령 프롬프트에서 아래 명령어를 실행하여 OpenCV 모듈을 설치하세요.

pip install opencv-python==4.1.1.26

위 명령어를 정상적으로 실행하면 다음과 같은 설치 성공 메시지가 출력됩니다.

Collecting opencv-python==4.1.1.26
Downloading https://files.pythonhosted.org/packages/...
Requirement already satisfied: numpy>=1.14.5 ...
Installing collected packages: opencv-python
Successfully installed opencv-python-4.1.1.26

이미지 덧셈 (Addition)

두 개의 이미지를 하나로 합성하려면 cv2.addWeighted() 함수를 사용합니다. 이 함수는 총 다섯 개의 인자를 받습니다. 첫 번째와 두 번째 인자는 합성할 두 이미지이고, 세 번째와 네 번째 인자는 각 이미지가 최종 결과물에서 차지할 가중치이며, 마지막 인자는 결과 이미지의 밝기를 조절하는 값입니다.

첫 번째 이미지 (image_one)

Python OpenCV로 배우는 이미지 산술 연산: 덧셈과 뺄셈 완벽 가이드

두 번째 이미지 (image_two)

Python OpenCV로 배우는 이미지 산술 연산: 덧셈과 뺄셈 완벽 가이드

이제 위의 두 이미지를 하나로 합쳐 보겠습니다.

예제 코드

# cv2 모듈 임포트
import cv2
# 이미지를 읽어 변수에 저장
image_one = cv2.imread('_1.jpg')
image_two = cv2.imread('_2.jpg')
# 두 이미지 더하기
result_image = cv2.addWeighted(image_one, 0.5, image_two, 0.5, 0)
# 최종 이미지 화면에 출력
cv2.imshow('Final Image', result_image)
# 메모리 해제
if cv2.waitKey(0) & 0xff == 27:
   cv2.destroyAllWindows()

실행 결과

최종 이미지

Python OpenCV로 배우는 이미지 산술 연산: 덧셈과 뺄셈 완벽 가이드

위 예제에서는 두 이미지에 각각 0.5의 동일한 가중치를 부여하여 반반씩 섞인 결과물을 얻었습니다. 가중치 값을 조절하면 한쪽 이미지를 더 진하게 또는 흐리게 표현할 수 있습니다.

이미지 뺄셈 (Subtraction)

두 이미지의 뺄셈 연산은 cv2.subtract(image_one, image_two) 메서드로 수행할 수 있습니다. 앞서 덧셈에서 사용한 것과 동일한 이미지를 그대로 활용해 보겠습니다. 코드는 다음과 같습니다.

예제 코드

# cv2 모듈 임포트
import cv2
# 이미지를 읽어 변수에 저장
image_one = cv2.imread('_1.jpg')
image_two = cv2.imread('_2.jpg')
# 두 이미지 빼기
result_image = cv2.subtract(image_one, image_two)
# 최종 이미지 화면에 출력
cv2.imshow('Final Image', result_image)
# 메모리 해제
if cv2.waitKey(0) & 0xff == 27:
   cv2.destroyAllWindows()

실행 결과

최종 이미지

Python OpenCV로 배우는 이미지 산술 연산: 덧셈과 뺄셈 완벽 가이드

뺄셈 연산은 첫 번째 이미지에서 두 번째 이미지의 픽셀 값을 제거하므로, 두 이미지의 차이를 시각적으로 확인할 때 유용하게 활용됩니다.

마무리

지금까지 OpenCV를 활용해 이미지에 덧셈과 뺄셈 같은 산술 연산을 적용하는 방법을 알아보았습니다. 참고로 산술 연산이 정상적으로 수행되려면 두 이미지의 크기(너비와 높이)가 동일해야 한다는 점을 기억하세요. 이후에는 비트 연산(bitwise operations) 등 더 고급 이미지 처리 기법도 함께 익혀보시길 추천합니다. 튜토리얼 내용에 대해 궁금한 점이 있다면 댓글로 남겨주세요.