목차
앞서 이미지(image)나 동영상(video) 파일을 읽어서 불러온 이미지는 픽셀(pixel)의 BGR(Blue, Green, Red) 값으로 구성 됨을 확인하였습니다. (https://scribblinganything.tistory.com/493) 이번 포스트는 픽셀을 비교 (연산) 분석할때 사용하는 주요 함수에 대해 알아보겠습니다. 함수는 더하기, 빼기, 곱하기 나누기 입니다.
함수 사용에 앞서 race_car.jpg 라는 그림 파일을 불러서 동일 사이즈로 BGR이 100, 100, 100인 그림을 만들어서 해당 그림과 비교하는 형식으로 예제를 실행하겠습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
print("img.shape: ",img.shape)
print("base_pixel.shape: ", base_pixel.shape)
cv2.imshow("img", img)
cv2.imshow("base_pixel", base_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
4번 라인: race_car 그림파일을 불러옵니다.
5번 라인: race_car 이미지의 사이즈 정보를 불러와서 numpy (넘파이) 함수를 사용해서 동일 형렬(배열, matrix)를 만들고 픽셀 값으로 100, 100, 100을 채웁니다.
결과>>
img.shape: (853, 1280, 3)
base_pixel.shape: (853, 1280, 3)
img 그림이미지>>
base_pixel 그림 이미지>>
아래 예제들은 위 코드를 기본으로 사용하는 함수 입니다.
파이썬 OpenCV add 함수 사용법 및 예제
두개 이미지(img, base_pixel)의 픽셀 값을 더해서 나오는 이미지를 출력해보겠습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
add_pixel = cv2.add(img, base_pixel)
cv2.imshow("race_car", add_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: OpenCV add를 사용해서 img 와 base_pixel 이미지 픽셀(Pixel) 값을 합했습니다.
결과>>
픽셀 값이 커지면서 하얀색에 가깝게 변색되는 느낌입니다.
파이썬 OpenCV subtract 함수 사용법 및 예제
두개 이미지(img, base_pixel)의 픽셀 값을 빼서 나오는 이미지를 출력해보겠습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
add_pixel = cv2.subtract(img, base_pixel)
cv2.imshow("race_car", add_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: OpenCV substract를 사용해서 img 와 base_pixel 이미지 픽셀(Pixel) 값을 뺏습니다.
결과>>
픽셀(pixel) 값이 작아지면서 전체적으로 어두운 톤의 그림(picture)이 되었습니다.
파이썬 OpenCV multiply 함수 사용법 및 예제
두개 이미지(img, base_pixel)의 픽셀 값을 곱해서 나오는 이미지를 출력해보겠습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
add_pixel = cv2.multiply(img, base_pixel)
cv2.imshow("race_car", add_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: OpenCV multiply를 사용해서 img 와 base_pixel 이미지 픽셀(Pixel) 값을 곱했습니다.
결과>>
픽셀 값이 255에 가까워지면서 거의 흰톤으로 나왔습니다.
파이썬 OpenCV divide 함수 사용법 및 예제
두개 이미지(img, base_pixel)의 픽셀 값을 곱해서 나오는 이미지를 출력해보겠습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
add_pixel = cv2.divide(img, base_pixel)
cv2.imshow("race_car", add_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: OpenCV divide 를 사용해서 img 와 base_pixel 이미지 픽셀(Pixel) 값을 나누기를 하였습니다.
결과>>
'파이썬(Python) > opencv' 카테고리의 다른 글
[Python] OpenCV PC 카메라 특정 색상만 출력하기 (Camera, BGR, HSV, inRange, bitwise_and) (0) | 2022.06.04 |
---|---|
[Python]OpenCV 임계값 비교하기 threshold (0) | 2022.04.22 |
[Python]OpenCV 픽셀 처리 함수:max,min,absdiff,compare (0) | 2022.04.20 |
[Python]OpenCV 3차원 이미지 스캔화면(2차원)처럼 바꾸기 (0) | 2022.04.05 |
[Python]OpenCV 이미지 기울어지게 만들기, 원근감 주기(getPerspectiveTransform, warpPerspective) (0) | 2022.04.04 |