我的问题是,当我将分辨率设置为高于640x480时,输出颜色仅在右下角。输出的其余部分为淡蓝色。
我有一个带4GB内存的RaspyberryPi4和一个PiCamera V2。最高分辨率的CPU使用率不超过〜65%。同样的错误也出现在另一个rapberrypi及其picamera(V2 NOIR)上。
这里是图像(不要在意角落的白条:它们是由不好的屏幕拍摄所致]
这是我的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硬件以及Raspberry如何通过Gpu读取它。
快速的解决方案是将分辨率更改为32的倍数。对于FullHd情况,它必须为1920 * 1088,而不是1920 * 1080。然后颜色又恢复正常了。
我还在fps下降之前发现了最高分辨率:水平1280 * 704垂直640 * 672更高的分辨率会将fps从30+降至〜6-8。
相机传感器的哪个部分被检测/使用还取决于分辨率。有关更多详细信息,请仔细阅读文档;-)