opencv和picamera(V2)高分辨率下的白/蓝平衡误差

问题描述 投票:0回答:1

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

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

这里是图像(不要在意角落的白条:它们是由不好的屏幕拍摄所致]

640x480 - normal

1920x1080 - with error

3280x2464 - with error

这是我的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()

我知道高分辨率下,我将失去更高的帧率。

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

问候

python opencv resolution raspberry-pi4 picamera
1个回答
0
投票

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

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

我还在fps下降之前发现了最高分辨率:水平1280 * 704垂直640 * 672更高的分辨率会将fps从30+降至〜6-8。

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

Picamera official Documentation

© www.soinside.com 2019 - 2024. All rights reserved.