我的问题是,当我将分辨率设置为高于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()
我知道分辨率越高,帧速率就越高。
有人知道错误的来源和/或我如何解决这个错误吗?
问候
我会自己回答这个问题:主要问题是picamera硬件以及复盆子是如何通过Gpu读取的。
快速的解决方案是将分辨率更改为32的倍数。对于FullHd情况,它需要是1920*1088,而不是1920*1080。然后颜色又恢复正常了。
我还发现了fps下降淹没前的最高分辨率:
水平1280*704
垂直640*672
每提高一个分辨率,fps就会从30+下降到~6-8。
相机传感器的哪一部分正在检测/使用也取决于分辨率。有关详细信息,请仔细阅读文档;-(
Picamera官方文档