#python #python-imaging-library #opencv-python
Вопрос:
Теперь я хочу создать изображение и поместить на него текст.
Но теперь у меня есть вопрос
Вот код, который я использую
from PIL import Image , ImageDraw , ImageFont
import cv2
import numpy as np
#Create a Image
p_image = Image.new('L' , (960 , 720) , 50)
# Put text on it
text = 'Hello WorldnHello WorldnHello WorldnHello WorldnHello WorldnHello World'
draw = ImageDraw.Draw(p_image)
draw.multiline_text(
(0 , 0) ,
text ,
font = ImageFont.truetype('font.ttf' , size = 16) ,
fill = 255)
# Save it by PIL
p_image.save('1.png')
#Convert to CV2 then save it
c_image = np.array(p_image)
cv2.imwrite('2.png' , c_image)
Оба метода приводят к одному и тому же изображению
Но размер PIL и cv2 совершенно разные
Размер файла составляет 2,27 КБ
Размер CV2 составляет 5,30 КБ
Может ли кто-нибудь объяснить мне, почему?
Ответ №1:
Это два разных модуля, которые потенциально используют разные версии разных библиотек, которые принимают разные решения о наилучших фильтрах и сжатии для использования.
Чтобы увидеть, как сохраняются изображения, попробуйте использовать любую из следующих команд для проверки двух изображений:
pngcheck -v image.png
exiftool image.png
magick identify -verbose image.png
Мне проще всего сравнивать вот так:
magick identify -verbose a.png > a
magick identify -verbose b.png > b
opendiff a b
Комментарии:
1. Ух ты, спасибо тебе. Этот вопрос так сильно смутил меня. Я думаю, что понимаю прямо сейчас