목차
앞서 이미지(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 max 함수 사용법 및 예제
max 함수는 픽셀(Pixel) 값을 비교해서 둘 중에 최대 값을 가져 옵니다. 즉, 100, 100, 100 BGR 값과 비교해서 큰 값을 불러 옵니다.
아래 코드를 통해 쉽게 이해하실 수 있습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
max_pixel = cv2.max(img, base_pixel)
cv2.imshow("race_car", max_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: cv2 의 max 함수를 사용해서 img 픽셀 값과 base_pixel 픽셀 값의 최대 값을 가져옵니다.
결과>>
파이썬 OpenCV min 함수 사용법 및 예제
min 함수는 픽셀(Pixel) 값을 비교해서 둘 중에 최소 값을 가져 옵니다. 즉, 100, 100, 100 BGR 값과 비교해서 작은 값을 불러 옵니다.
아래 코드를 통해 쉽게 이해하실 수 있습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
min_pixel = cv2.min(img, base_pixel)
cv2.imshow("race_car", min_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: cv2 의 min 함수를 사용해서 img 픽셀 값과 base_pixel 픽셀 값의 최소 값을 가져옵니다.
결과>>
파이썬 OpenCV absdiff 함수 사용법 및 예제
absdiff 함수는 픽셀(Pixel) 값을 비교해서 둘 중에 최소 값을 가져 옵니다. 즉, 100, 100, 100 BGR 값과 비교해서 차이 값의 절대 값(Absoulte value) 불러 옵니다.
아래 코드를 통해 쉽게 이해하실 수 있습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
abs_pixel = cv2.absdiff(img, base_pixel)
cv2.imshow("race_car", abs_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: cv2 의 absdiff 함수를 사용해서 img 픽셀 값과 base_pixel 픽셀 값의 차이의 절대값을 가져옵니다.
결과>>
파이썬 OpenCV compare 함수 사용법 및 예제
compare함수는 픽셀(Pixel) 값을 비교하는데 비교 조건을 option에서 선택할 수 있습니다. 조건(Condition)은 아래와 같습니다. 그리고 비교 결과가 참(True)일 경우 255 값을 return 해주고 거짓(False)일 경우 0을 return 해줍니다.
- cv2.CMP_GT : >
- cv2.CMP_GE : >=
- cv2.CMP_LT : <
- cv2.CMP_LE : <=
- cv2.CMP_EQ : =
- cv2.CMP_NE : !=
등호로 사용법을 아실 것으로 생각합니다.
아래 코드를 통해 쉽게 이해하실 수 있습니다.
예제 코드>>
import numpy as np
import cv2
img = cv2.imread("race_car.jpg")
base_pixel = np.full(img.shape,([100,100,100]), dtype=np.uint8)
abs_pixel = cv2.absdiff(img, base_pixel)
cv2.imshow("race_car", abs_pixel)
cv2.waitKey(0)
cv2.destroyAllWindows()
7번 라인: cv2 의 compare함수를 사용해서 255, 0 값을 불러 옵니다.
결과>>
'파이썬(Python) > opencv' 카테고리의 다른 글
[Python]OpenCV 임계값 비교하기 threshold (0) | 2022.04.22 |
---|---|
[Python]OpenCV 픽셀 처리 함수: add, subtract, multiply, divide (0) | 2022.04.21 |
[Python]OpenCV 3차원 이미지 스캔화면(2차원)처럼 바꾸기 (0) | 2022.04.05 |
[Python]OpenCV 이미지 기울어지게 만들기, 원근감 주기(getPerspectiveTransform, warpPerspective) (0) | 2022.04.04 |
[Python]OpenCV 사람 얼굴 사진 겹치게 합성하기, 겹치면서 사진 바꾸기 (1) | 2022.04.01 |