![](https://i-blog.csdnimg.cn/blog_migrate/393031752b4158e6bb9442ae8e580869.png)
树莓派使用的是3B+
1. 将摄像头硬件正确的安装到板子上
2. 检查摄像头是否正确安装
$ vcgencmd get_camera
supported=1 detected=1
detected=1表示已经检测到摄像头
3. 添加驱动程序文件
sudo vim /etc/modules
在文件的最后一行添加bcm2835-v412;添加后的文件内容为:
i2c-dev
bcm2835-v412
4. 运行配置项设置程序
sudo raspi-config
选择5 interfacting Options
进入后,选择P1 Camera
设置完后,重启设备,
6. 抓取图片
运行以下命令抓取图片
raspistill -o image.jpg -tl 5000
//raspistill -o image%d.jpg -rot 0 -w 300 -h 300 -t 5000 -tl 5000 -v
抓取的图片效果为:
![](https://i-blog.csdnimg.cn/blog_migrate/4a6ed46ed97fe1c9cb857645c2087330.png)
image
常用参数意义:
-v:调试信息查看
-w:图像宽度
-h:图像高度
-rot:图像旋转角度,只支持 0、90、180、270 度(这里说明一下,测试发现其他角度的输入都会被转换到这四个角度之上)
-o:图像输出地址,例如image.jpg,如果文件名为“-”,将输出发送至标准输出设备
-t:获取图像前等待时间,默认为5000,即5秒
-tl:多久执行一次图像抓取
7. 生成h246文件
使用raspivid指令来生成.h246的文件
raspivid -o imagechain.h264
这样就会在当前文件夹下面生成imagechain.h264的文件,默认时间是5秒;可以设置录制的视频宽高和时间(raspivid --help)
"-t" 选项来设置你想要的长度就行了(单位是毫秒)。
"-w" 和 "-h" 选项设置分辨率
8.安装和使用opencv
安装opencv
sudo apt-get install libopencv-dev
sudo apt-get install python-opencv
测试是否安装成功
ython
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'2.4.9.1'
>>>
opencv测试相机预览
opencv.py
# 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
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