使用 opencv 和 picamera (V2) 的高分辨率的白/蓝平衡错误
White/ Blue balance error in high resolution with opencv and picamera (V2)
我的问题是当我将分辨率设置为高于 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()
我知道在高分辨率下我会失去更高的帧率。
有人知道错误的来源是什么吗and/or我该如何解决这个错误?
此致
我会自己回答这个问题:
主要问题是 picamera 硬件以及 Raspberry 如何通过 Gpu 读取它。
快速解决方案是将分辨率更改为 32 的倍数。对于 FullHd 情况,它需要是 1920*1088 而不是 1920*1080。然后颜色又正常了。
我还找到了 fps 下降淹没之前的最高分辨率:
横向 1280*704
垂直 640*672
每个更高的分辨率都会将 fps 从 30+ 降低到 ~6-8。
相机传感器的哪一部分detecting/used也取决于分辨率。
有关详细信息,请仔细阅读文档 ;-)
我的问题是当我将分辨率设置为高于 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()
我知道在高分辨率下我会失去更高的帧率。
有人知道错误的来源是什么吗and/or我该如何解决这个错误?
此致
我会自己回答这个问题: 主要问题是 picamera 硬件以及 Raspberry 如何通过 Gpu 读取它。
快速解决方案是将分辨率更改为 32 的倍数。对于 FullHd 情况,它需要是 1920*1088 而不是 1920*1080。然后颜色又正常了。
我还找到了 fps 下降淹没之前的最高分辨率:
横向 1280*704
垂直 640*672
每个更高的分辨率都会将 fps 从 30+ 降低到 ~6-8。
相机传感器的哪一部分detecting/used也取决于分辨率。 有关详细信息,请仔细阅读文档 ;-)