0

두 가지 다른 방법으로 이미지를로드하고 저장하는 코드가 있습니다. 먼저 openCV를 사용하고, 두 번째는 PIL을 사용합니다.openCV가 원본보다 큰 파일 (kB)을 저장하는 이유는 무엇입니까?

import cv2 
from PIL import Image 

img = cv2.imread("/home/myname/png/image.png") 
cv2.imwrite("/home/myname/png/image_save.png", img) 

img = Image.open("/home/myname/png/image.png") 
img.save("/home/myname/png/image_save_pil.png") 

원본 이미지의 크기는 204.6kB입니다. openCV로 얻은 결과는 245.0 kB이고, PIL의 결과는 204.6 kB입니다.

왜 openCV로 저장된 이미지의 크기가 더 큽니까?

+2

당신이합니다 ([imwrite의 문서]에서 압축 매개 변수에 대해 읽어나요 https://docs.opencv.org/2.4/modules/highgui/doc/read ing_and_writing_images_and_video.html? highlight = imwrite # imwrite)? – GPhilo

답변

0

두 개의 PNG가 다른 라이브러리에서 생성 된 경우 동일한 크기를 가질 것으로 기대할 수 없습니다.

파일 사양은 파일의 구조를 정의하므로 모든 사람이 정보를 기록 할 위치와 위치를 알 수 있습니다. 어떻게

그것은 두 개의 서로 다른 가족 일란성 쌍둥이를 제기처럼 ... 그리고 데이터를 디코딩하는 방법 ...

많은 일들이 메타 데이터 압축률처럼, 선택적 인코딩합니다.

이미지 쓰기 기능과 동일한 매개 변수를 설정할 수는 있지만 동일한 파일 크기를 얻지는 않습니다.

2

크기 차이는 ZLIB 압축 설정과 관련이 있습니다. 기본 PIL으로

  • 에만 사용 3 (here 참조) 최대 9 기본을 OpenCV으로
  • (here 참조) 사용이에서 (이 코드를 사용하여 9 압축을 설정할 수 있습니다 OpenCV의 사용

answer)

cv2.imwrite('image.png', img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])