Raspiberry Camera详解+picamera库+Opencv控制

时间:2017-09-28 15:33:56   收藏:0   阅读:7618

使用树莓派的摄像头,将树莓派自身提供的picamera的API数据转换为Python Oencv可用图像数据:

# import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
# initialize the camera and grab a reference to the raw camera capture
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
camera.hflip = True
camera.vflip = True
rawCapture = PiRGBArray(camera, size=(640, 480))
# allow the camera to warmup
time.sleep(0.1)
# capture frames from the camera
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
    # grab the raw NumPy array representing the image, then initialize the timestamp
    # and occupied/unoccupied text
    image = frame.array
    # show the frame
    cv2.imshow("Frame", image)
    key = cv2.waitKey(1) & 0xFF
    # clear the stream in preparation for the next frame
    rawCapture.truncate(0)
    # if the `q` key was pressed, break from the loop
    if key == ord("q"):
        break

这里简单的讲一下picamera对象的相关内容:

1、首先使用picamera模块当中的PiCamera方法创建返回一个camera的对象:

camera = PiCamera()

2、初始化camera对象当中的相关参数:

camera.saturation = 80 # 设置图像视频的饱和度
camera.brightness = 50 # 设置图像的亮度(50表示白平衡的状态)
camera.shutter_speed = 6000000 # 相机快门速度
camera.iso = 800 # ISO标准实际上就是来自胶片工业的标准称谓,ISO是衡量胶片对光线敏感程度的标准。如50 ISO, 64 ISO, 100 ISO表示在曝光感应速度上要比高数值的来得慢,高数值ISO是指超过200以上的标准,如200 ISO, 400 ISO
camera.framrate = 32 #这里可能用的Fraction是一个分数模块来存储分数1/6,保证分数运算的精度(记得调用模块:from fractions import Fraction)
camera.hflip = Ture # 是否进行水平翻转
camera.vflip = False #是否进行垂直翻转
camera.rotation = 0 #是否对图像进行旋转
camera.resolution = (280,160) #设置图像的width和height

ISO参数介绍:

   感光度,英文名称为 International Organization for Standardization (ISO),说到相机中的ISO参数不得不提一下胶片速度(Film Speed)。胶片速度是感光胶片对光敏感度的度量。相对而言灵敏度差的胶片,对应一个低速的索引值,这样就会需要对光进行更长的曝光来达到高灵敏胶片的效果,因此称之为低速胶片,高灵敏的胶片称之为高速胶片,设置的范围ISO100到ISO28000。

ISO调节的实验结果(测试条件:Frame_Rate=32 快门速度shutter_speed=6000000 饱和度saturation = 100 图像亮度brightness = 50)

技术分享

Shutter参数介绍:

    快门,英文名称为Shutter,快门是相机上控制感光片有效曝光时间的一种装置。快门的工作原理是这样的,为了保护相机内的感光器件,不至于曝光,快门总是关闭的;拍摄时,调整好快门速度后,只要按住照相机的快门释放钮(也就是拍照的按钮),在快门开启与闭合的间隙间,让通过摄影镜头的光线,使照相机内的感光片获得正确的曝光,光穿过快门进入感光器件,写入记忆卡。快门速度一般的表示方法是1/100s、1/30s、2s。

Shutter调节的实验结果(测试条件:Frame_Rate=32 ISO感光度=800 饱和度saturation = 100图像亮度brightness = 50)

技术分享

Saturation参数介绍:

    所谓的饱和度,指的其实是色彩的纯度,纯度越高,表现越鲜明,纯度较低,表现则较黯淡,色饱和度表示光线的彩色深浅度或鲜艳度,取决于彩色中的白色光含量,白光含量越高,即彩色光含量就越低,色彩饱和度即越低,反之亦然。saturation的取值范围是 0-100之间。

Saturation调节的实验结果(测试条件:Frame_Rate=32 快门速度shutter_speed=6000000 ISO感光度=800 图像亮度brightness = 50) 

技术分享

Brightness亮度参数介绍:

   色彩亮度(“Color Brightness”)的新标准将用来测量色彩的光输出情况,评价摄像机的色彩表现,用户可根据此标准的规格来更好地了解产品性能。 设置的范围是0-100之间,50表示的是白平衡状态。

Brightness调节的实验结果(测试条件:Frame_Rate=32 ISO感光度=800 饱和度saturation = 100图像亮度brightness = 50)

技术分享

光圈参数介绍:(树莓派相机的参数中似乎光圈的大小是固定的,不可以调节,这里列出来记录,方便后面的使用和理解)

   光圈英文名称为Aperture,光圈是一个用来控制光线透过镜头,进入机身内感光面的光量的装置,它通常是在镜头内,光在通过镜头某个位置的多片金属叶片(收拢之后)则能在镜头上就控制光线进入的量。我们平时所说的光圈值 F2.8、F8、F16等是光圈“系数”,是相对光圈,并非光圈的物理孔径,与光圈的物理孔径及镜头到感光器件(胶片或CCD或CMOS)的距离有关。

简单相机的结构图:

技术分享

相关参数的设置技巧:

1、ISO感光度的设置技巧

2、快门速度的设置技巧

备注:使用摄像头的过程中如果遇到如下的错误说明已经有进程调用了Raspberry的摄像头了,硬件已经被占用,所以不能启动摄像头。

技术分享这个时候你只需要关闭对应调用摄像头的进程,释放摄像头的资源就可以继续使用了。

                                                                                    未完待续~

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!