#python #raspberry-pi #python-imaging-library
#python #raspberry-pi #python-imaging-library
Вопрос:
Текущая документация для rasberry pi гласит, что для рисования PIL-изображения на снимке камеры необходимо выполнить следующее:
import picamera
from PIL import Image
from time import sleep
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
camera.framerate = 24
camera.start_preview()
# Load the arbitrarily sized image
img = Image.open('overlay.png')
# Create an image padded to the required size with
# mode 'RGB'
pad = Image.new('RGB', (
((img.size[0] 31) // 32) * 32,
((img.size[1] 15) // 16) * 16,
))
# Paste the original image into the padded one
pad.paste(img, (0, 0))
# Add the overlay with the padded image as the source,
# but the original image's dimensions
o = camera.add_overlay(pad.tostring(), size=img.size)
# By default, the overlay is in layer 0, beneath the
# preview (which defaults to layer 2). Here we make
# the new overlay semi-transparent, then move it above
# the preview
o.alpha = 128
o.layer = 3
# Wait indefinitely until the user terminates the script
while True:
sleep(1)
Однако Image.tostring() выдает ошибку с надписью «tostring() удалена. Пожалуйста, вызовите tobytes() вместо этого «
Каков правильный способ сделать это, учитывая, что tostring устарел?
Ответ №1:
Ответ в вашем вопросе:
Однако Image.tostring() выдает ошибку с надписью «tostring() удалена. Пожалуйста, вызовите tobytes() вместо этого «
Просто измените:
o = camera.add_overlay(pad.tostring(), size=img.size)
Для:
o = camera.add_overlay(pad.tobytes(), size=img.size)
Документация picamera уже была обновлена для решения этой проблемы: https://picamera.readthedocs.io/en/release-1.13/recipes1.html#overlaying-images-on-the-preview