Raspberry pi camera - как нарисовать изображение PIL в окне предварительного просмотра? - PullRequest
0 голосов
/ 14 марта 2019

Текущая документация для 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 Ответ

1 голос
/ 15 марта 2019

Ответ на ваш вопрос:

Однако, 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...