从picamera捕获到numpy数组和路径,图像质量不同


8

从Pi Camera捕获的质量在捕获到numpy数组以及直接捕获到路径时会有所不同。前者的色调比后者更偏粉红。

这是为什么。?
我用于捕获图像的代码:

from picamera import PiCamera
import cv2
import time

camera = PiCamera()
camera.resolution = (1280, 720)
img = np.empty((720, 1280, 3), dtype=np.uint8)

start = time.time()
camera.capture(img, "bgr")
print("Trigger time: " + str(time.time() - start))
cv2.imwrite("array_capture.png", img)

start = time.time()
camera.capture("normal_capture.png")
print("Trigger time: " + str(time.time() - start))

将图像捕获到numpy数组所需的时间是直接路径捕获的一半。那么,这与图像降噪有关吗?

捕获到numpy数组的 图像:0.71秒捕获到路径的图像:1.52秒图像捕获到numpy数组

捕获到路径的图像


写入后为numpy设置触发时间。然后,您可以真正进行比较。我很好奇
jaromrax

@jaromrax这样做将触发时间增加到大约0.925秒。但是它仍然比路径捕获要少。
harshatech2012

可能是压缩问题吗?例如,也许cv2不使用过滤,但picamera使用。输出文件的大小是多少?您可以通过du normal_capture.png和检查du array_capture.png
Hunter Akins '18

Answers:


1

根据基本食谱部分3.5部分中的Picamera文档

您可能希望捕获一系列图像,这些图像在亮度,颜色和对比度方面看起来都相同(例如,这在缩时摄影中很有用)。需要使用各种属性,以确保多个镜头的一致性。具体来说,您需要确保相机的曝光时间,白平衡和增益都固定不变:

要固定曝光时间,请将shutter_speed属性设置为合理的值。(可选)设置iso为固定值。要固定曝光量,让analog_gaindigital_gain确定合理的值,然后将Exposure_mode设置为'off'。要固定白平衡,将设置awb_mode'off',然后将其设置awb_gains为一个(红色,蓝色)增益组。

可能很难知道这些属性的合适值。对于iso,一个简单的经验法则是100和200在白天是合理的值,而400和800在弱光下更好。要确定一个合理的值,shutter_speed您可以查询该exposure_speed属性。对于曝光增益,通常要等到analog_gain大于1才exposure_mode设置为'off'。最后,为了确定合理的值,以便awb_gainsawb_mode设置为以外的其他属性时简单地查询属性'off'。同样,这将告诉您相机的白平衡增益,由自动白平衡算法确定。

以下脚本提供了配置这些设置的简短示例:

from time import sleep
from picamera import PiCamera

camera = PiCamera(resolution=(1280, 720), framerate=30)
# Set ISO to the desired value
camera.iso = 100
# Wait for the automatic gain control to settle
sleep(2)
# Now fix the values
camera.shutter_speed = camera.exposure_speed
camera.exposure_mode = 'off'
g = camera.awb_gains
camera.awb_mode = 'off'
camera.awb_gains = g
# Finally, take several photos with the fixed settings
camera.capture_sequence(['image%02d.jpg' % i for i in range(10)])
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.