안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
1. 덧셈
이미지를 더해줄 때는 cv2.add( ) 함수를 사용해줍니다. 참고로 앞으로 src와 dst라는 파라미터를 많이 언급할텐데, src는 source의 약자, dst는 destination의 약자로 각각 input과 output으로 이해하시면 편하실거예요.
cv2.add(src1, src2, dst=None, mask=None, dtype=None)
이때 여러 파라미터들 중에서, 반드시 값을 넣어주어야 하는 2가지가 있는데 바로 src1과 src2입니다.
보통 src1은 이미지 파일, 정확히는 이미지 파일의 경로를 입력해주며,
src2에는 src1과 동일하게 이미지 파일을 입력해주거나, 스칼라 값(픽셀 값)을 숫자로 입력해줍니다.
두 가지 경우가 어떻게 다른지 천천히 알아보겠습니다.
1) 이미지 + 스칼라 값 (밝기 조절)
이미지에 스칼라 값을 넣어준다는 의미는 밝기를 조절한다는 것입니다. 흑백과 컬러 이미지에 대해서 어떻게 처리해는지 코드와 결과를 보면서 파악해 보세요.
<코드>
import cv2
# 흑백 이미지 불러오기
src = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE)
dst = cv2.add(src, 50)
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
# 컬러 이미지 불러오기
src = cv2.imread('cat.jpg')
#여기서 50, 50, 50, 0은 각각 B,G,R,alpha(투명도)를 나타냄
dst = cv2.add(src, (50, 50, 50, 0))
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
<실행 결과>
2) 이미지 + 이미지
이번에는 이미지끼리 더해보겠습니다. 완전 다른 이미지 두 개를 더해줄 수도 있지만 쉬운 이해를 위해서 흰색 바탕에 검은색 원의 이미지를 생성해서 더해줘보겠습니다.
<코드>
import cv2
# 그레이스케일로 이미지 불러오기
src1 = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE)
src2 = cv2.imread('mask_circle.jpg', cv2.IMREAD_GRAYSCALE)
# 이미지 2개 더하기
dst = cv2.add(src1, src2)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
<실행 결과>
그레이스케일 영상에서 검은색은 0, 흰색은 255의 값을 가지므로, 검은색 원이 있던 부분은 원래의 고양이 사진을 그대로 출력하며, 흰색이었던 부분은 모두 흰색으로 출력되는 것을 확인 하실 수 있습니다. 참고로 두 이미지의 픽셀값을 더했을 때 255를 넘으면 모두 255(흰색)으로 출력됩니다.
2. 가중치 덧셈
그렇다면 이미지를 각자 다른 비율로 더해주고 싶을 땐 어떻게 해야할까요? 그럴 땐 아래의 함수를 사용해주시면 됩니다.
cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None)
방금 전 코드에서 cv2.add( ) 부분의 코드를 아래의 코드로만 바꿔주면 되므로 전체 코드는 생략하도록 하겠습니다.
dst = cv2.addWeighted(src1, 0.5, src2, 0.5, 0)
<실행 결과>
3. 뺄셈
뺄셈은 덧셈과 개념이 매우 흡사하므로 이해하기 쉬우실 거예요.
이 것 역시 이전 덧셈 코드에서 cv2.add( ) 코드 한줄만 아래의 코드로 바꿔주시면 됩니다.
dst = cv2.subtract(src1, src2)
<실행 결과>
여기서도 0보다 작은 음수는 픽셀값이 0으로 자동으로 변환되어 검은색으로 표현되는 것에 주의해주세요.
4. 차이계산
차이 계산은 두 영상 사이에 차이가 생긴 부분만 나타내주는 연산입니다.
cv2.absdiff(src1, src2, dst=None)
CCTV로 주차장을 찍으며 실시간으로 차이계산을 하고, 변화가 생겼을 때만 알람을 띄워주는 알고리즘을 만든다면 효과적일 것 같네요.
오늘은 이러한 개념이 있다는 것만 알고 넘어가도록 하겠습니다.
오늘 준비한 내용은 여기까지입니다.
감사합니다.
<참고 자료>
패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online
'파이썬 패키지 > 이미지 처리' 카테고리의 다른 글
[qrcode/segno] 파이썬으로 qrcode 자동 생성하기 (1) | 2024.02.18 |
---|---|
[#shorts] 컴퓨터 비전으로 무엇을 할 수 있을까? (0) | 2022.02.16 |
[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 3편. 실시간 카메라 영상과 동영상 파일 다루기 (0) | 2022.02.10 |
[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 2편. 이미지 속성 가져오는 방법과 numpy로 이미지 생성하기 (0) | 2022.02.08 |
[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 1편. OpenCV 설치 및 사진 불러오기 (1) | 2022.01.13 |