목차
파이썬 OpenCV Image File 모자이크 처리
이번 포스트는 파이썬 OpenCV의 Blur 함수를 사용해서 모자이크(Mosaic)처리 하는 방법에 대해 알아보겠습니다. 이번 포스트를 수행하기 위해서 아래 단계를 수행 합니다.
- 이미지 파일불러오기
- 모자이크할 영역 선택하기
- 선택 영역 blur함수로 모자이크하기
- 원본 영역에 blur 모자이크된 영역 덧붙이기
- 변경된 이미지 불러오기
1~2번 단계는 selectROI로 구현 합니다. selectROI 함수 사용법에 대해서는 아래 포스트에서 진행하였으니 궁금하시면 아래 포스트 참조하시면 됩니다.
https://scribblinganything.tistory.com/496
3번 단계에서 blur 함수를 사용합니다. blur 함수 사용법은 아래와 같습니다.
cv2.blur(src, ksize)
src는 blur 처리할 이미지를 넣습니다. ksize는 표준화 필터(Normalized filter)의 커널 사이즈(Kernal size)를 의미합니다. 튜블(Tuple) 형태로 값을 입력 하고 간단히 말하면 커널이 커질 수록 흐리게 처리되는 정도가 커집니다.
4~5번 단계는 앞서 이미지를 픽셀에서 편집(edit)하는 포스트에서 사용방법을 배웠으니 참조하시면 됩니다.
https://scribblinganything.tistory.com/493
앞서 내용이 잘이해되지 않더라도 아래에 실습 예제를 보시면 코드 동작에 대해 쉽게 이해할 수 있습니다.
파이썬 OpenCV Image File 모자이크 실습 예제
예제 코드>>
import cv2
img = cv2.imread('car.jpg')
x_pos,y_pos,width,height = cv2.selectROI("location", img, False)
print("x position, y position : ",x_pos, y_pos)
print("width, height : ",width, height)
mosaic_loc = img[y_pos:y_pos+height, x_pos:x_pos+width]
mosaic_loc = cv2.blur(mosaic_loc,(50,50))
img_w_mosaic = img
img_w_mosaic[y_pos:y_pos+height, x_pos:x_pos+width] = mosaic_loc
cv2.destroyAllWindows()
cv2.imshow("Mosaic", img_w_mosaic)
cv2.waitKey(0)
cv2.destroyAllWindows()
3번 라인: imread 함수로 자동차 이미지를 불러옵니다.
5번 라인: selectROI 함수를 사용해서 이미지를 화면에 띄우고 마우스 클릭으로 영역을 선택 후 enter 입력하면 x, y 좌표와 넓이와 높이 값을 return 해줍니다.
9~10번 라인: 선택한 구역의 이미지 픽셀값을 mosaic_loc에 저장하고 blur 처리 합니다. 커널 사이즈는 (50,50)으로 처리 합니다.
11~12번 라인: 모자이크(Mosaic) 처리한 이미지를 원본의 동일 위치에 덧붙입니다.
13번 라인: selecROI 함수에의해 출력된 그림(Picture)파일을 없앱니다.
14번 라인: 모자이크로 흐림처리된 이미지를 불러 옵니다.
결과>>
Select a ROI and then press SPACE or ENTER button!
Cancel the selection process by pressing c button!
x position, y position : 840 482
width, height : 305 141
x축과 y축의 정보와 사이즈 정보가 출력되고 번호판을 흐림처리 하였습니다.
'파이썬(Python) > opencv' 카테고리의 다른 글
[Python]OpenCV 사람 얼굴 사진 겹치게 합성하기, 겹치면서 사진 바꾸기 (1) | 2022.04.01 |
---|---|
[Python]OpenCV 마우스 이벤트/클릭(Mouse Event, Click) 콜백함수 (0) | 2022.03.30 |
[Python]OpenCV 이미지 마우스 클릭 좌표(위치) 값 확인(selectROI 함수) (0) | 2022.03.25 |
[Python]OpenCV 색변환 함수 cvtColor 사용 방법(Gray, HSV, RGB, LAB 비교) (0) | 2022.03.24 |
[Python]OpenCV 이미지 픽셀로 변경하여 수정하기(Numpy array) (0) | 2022.03.22 |