이미지를 받아오고 panel에 들어온 값에 따라 해상도(?)를 설정하여 픽셀의 형태로 만드는 코드
import cv2
file_name = 'rosicky.jpg'
image = cv2.imread(file_name)
panel = np.zeros([100,400], np.uint8)
cv2.namedWindow('panel')
def nothing(x):
pass
cv2.createTrackbar('FX', 'panel', 1,100, nothing)
cv2.createTrackbar('FY', 'panel', 1,100, nothing)
return_name = file_name.replace('.','_pixel.')
while True:
# 트랙바의 위치에 따라 변수에 값할당
fx = cv2.getTrackbarPos('FX', 'panel') / 100
fy = cv2.getTrackbarPos('FY', 'panel') / 100
pixel = cv2.resize(image, dsize=None, fx=fx, fy=fy, interpolation=cv2.INTER_NEAREST)
pixel = cv2.resize(pixel, dsize=(int(image.shape[1]*1),int(image.shape[0]*1)), interpolation=cv2.INTER_NEAREST)
cv2.imshow('image', image)
cv2.imshow('pixel', pixel)
cv2.imshow('panel', panel)
if cv2.waitKey(1) == ord('s'):
cv2.imwrite(return_name, pixel)
if cv2.waitKey(1) == ord('q'):
break
cv2.waitKey(0)
cv2.destroyAllWindows()
pixel = cv2.resize(image, dsize=None, fx=fx, fy=fy, interpolation=cv2.INTER_NEAREST)
pixel = cv2.resize(pixel, dsize=(int(image.shape[1]*1),int(image.shape[0]*1)), interpolation=cv2.INTER_NEAREST)
이미지의 사이즈를 조정하는 방법 중 제일 퀄리티가 떨어지게되는 INTER_NEAREST 옵션을 사용하여 줄이고 다시 원래크기로 복원하여 해상도를 낮게 만들어 픽셀화한다.
panel에 크기를 줄이는 가중치를 받아와 실시간으로 결과가 어떻게 변하는지를 확인할 수 있도록함
s를 입력시 동명의 이름에 _pixel이 붙은 상태로 저장이되고
q를 입력시 종료된다.
'CV > open cv' 카테고리의 다른 글
[cv] 얼굴인식하여 얼굴부분만 모자이크하기 (2) | 2022.04.14 |
---|