이미지를 받아오고 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

+ Recent posts