在python和raspistill中Raspberry Pi捕获的图像质量

在python和raspistill中Raspberry Pi捕获的图像质量,python,opencv,raspberry-pi,Python,Opencv,Raspberry Pi,我用我的覆盆子皮来检测我的猫什么时候在桌子上,我在一些图像捕捉方面有点麻烦。以下是我正在运行的相关代码: from picamera.array import PiRGBArray from picamera import PiCamera import time import cv2 import subprocess #method 1 with PiCamera() as camera: capImg = PiRGBArray(camera) time.sleep(0.1

我用我的覆盆子皮来检测我的猫什么时候在桌子上,我在一些图像捕捉方面有点麻烦。以下是我正在运行的相关代码:

from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
import subprocess

#method 1
with PiCamera() as camera:
    capImg = PiRGBArray(camera)
    time.sleep(0.1)
    camera.capture(capImg,format = 'bgr')
    image = capImg.array
    cv2.imwrite('image4.bmp',image)

#method 2
callString = 'raspistill -n -w %s -h %s -o /home/pi/python/catcam/image5.bmp --timeout 0' % (640,480)
subprocess.call(callString, shell = True)
有没有办法将raspistill图像保存在内存中,或者像camera.capture\u这样的操作是连续的?比较picamera图像的质量:

raspistill的颜色要好得多:

我想每隔几秒钟捕获一个映像,但不想为每个映像都写入磁盘,否则我会很快烧掉内存卡。而且,拉斯皮斯蒂尔相当慢

任何关于如何以恒定速率拍摄质量更好的图像的建议都将不胜感激


编辑感谢下面的标记,我已经编辑了当前版本的文章。

如果您愿意,可以使用Python调用raspistill。下面是一个以第二次延迟重复运行raspistill命令的示例:

from time import sleep
from datetime import datetime
import subprocess

dir = "/home/pi/Desktop/cam_images/"

while (True):
    fileName= "img_" + datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + ".jpg"
    cmd = "raspistill -o " + dir + fileName
    subprocess.call(cmd, shell=True)   
    sleep(1)

根据您的需要,完成后请调用
camera.close()
。谢谢-这很有帮助!我已经编辑了上面的内容,但问题的关键仍然是——两种图像捕获方法的质量不同。我认为这两种方法的质量看起来都很好。唯一的问题看起来像亮度或对比度。。。可能是更高的iso设置或将自动白平衡AWB更改为自动以外的其他设置。有一些基本设置,你可以玩,看看你是否可以得到同样的亮度。在《感谢回复》的自述中描述-鉴于raspistill提供了更好的“自动”版本,我仍然好奇是否有办法将其保存在内存中并快速拍照/拍摄电影。picamera版本很容易在上面所示的蓝色和橙色之间波动,因此校正工作比我想做的要多。也许增加捕获前延迟会有所帮助?在我自己的测试中,似乎AGC需要0.3秒来调整曝光,但这可能会因相机而异(我使用的是)。我也不知道raspistill是如何处理这件事的,所以我很可能在这里胡说八道!