0

我的问题是当我将分辨率设置为高于 640x480 时,输出颜色只在右下角。输出的其余部分为蓝色。

我有一个带有 4GB 内存的 RaspyberryPi4 和一个 PiCamera V2。CPU 使用率不超过 ~65%,分辨率最高。同样的错误也出现在另一个 rapberrypi 及其 picamera (V2 NOIR) 上。

这是图片(不要关心角落里的白条:它们来自糟糕的屏幕截图)

640x480 - 正常

1920x1080 - 有错误

3280x2464 - 有错误

这是我的python脚本:

import cv2
cap = cv2.VideoCapture(0)
width = 640; height = 480
# width = 1920; height = 1080
# width = 3280; height = 2464

cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
cv2.waitKey()

print(cap.get(cv2.CAP_PROP_FRAME_WIDTH),cap.get(cv2.CAP_PROP_FRAME_WIDTH))
while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow('Resolution: '+str(width)+'x'+str(height), frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

我知道高分辨率我会失去更高的帧率。

有人知道错误的来源和/或我如何解决此错误?

问候

4

1 回答 1

2

我将自己回答这个问题:主要问题是 picamera 硬件以及 Raspberry 如何通过 Gpu 读取它。

快速的解决方案是将分辨率更改为 32 的倍数。对于 FullHd 情况,它需要为 1920*1088 而不是 1920*1080。然后颜色又正常了。

我还找出了 fps 下降之前的最高分辨率:
水平 1280*704
垂直 640*672
每个更高的分辨率都会将 fps 从 30+ 下降到 ~6-8。

正在检测/使用相机传感器的哪一部分也取决于分辨率。有关更多详细信息,请仔细阅读文档;-)

Picamera 官方文档

于 2020-05-20T05:15:26.850 回答