Raspicam - пустой буфер при использовании sensor_mode = 2 и use_video_port = True при максимальном разрешении - PullRequest
0 голосов
/ 29 мая 2020

Я прочитал эту великолепную документацию (https://picamera.readthedocs.io/en/release-1.13/fov.html#sensor -modes ) и попытался захватить изображения с максимальным разрешением через видеопорт. Следующий скрипт предоставляет простой тест:

from picamera.array import PiRGBArray
from picamera import PiCamera
import numpy as np 

def compare_stillVsVidPort(camera=None):
    if camera==None:
        camera = PiCamera()
    images = []
    mode_sizes = [[800,480],[1920,1080],[3280,2464],[3280,2464],[1640,1232],[1640,922],[1280,720],[640,480]]
    m=2
    if not camera._get_resolution() == mode_sizes[m]:
        camera.resolution = mode_sizes[m]

    # test video port
    rawCapture = PiRGBArray(camera,size=mode_sizes[m])
    camera.capture(rawCapture, format="bgr", use_video_port=True, bayer=False)
    images.append(rawCapture.array)    

    # test still_port
    rawCapture = PiRGBArray(camera,size=mode_sizes[m])
    camera.capture(rawCapture, format="bgr", use_video_port=False, bayer=False)
    images.append(rawCapture.array)

    # display results
    im_means = [np.mean(m) for m in images]
    im_vars = [np.var(m) for m in images]
    print("Means={}\nVars={}".format(im_means,im_vars))

compare_stillVsVidPort()

Оценка на RasPi 4 с Cam-Module v2.1 и новейшими python -пакетами + системные драйверы на стандартном Raspbian дает что-то вроде:

Means=[0.0, 118.44878189011192]
Vars=[0.0, 3813.104862715143]

Как получить полносенсорный кадр в максимальном разрешении даже для видеопорта?

...