树莓派自带摄像头OpenCV图像识别-二维码识别

1、安装树莓派镜像,SSH,VNC等这里就不介绍了很简单大家自行百度。

2、我没有用VNC 所以装了teamviewer用于树莓派远程控制

安装教程参考:http://blog.csdn.net/shaopengf/article/details/75072907

3、安装一个功能齐全的OenpCV视觉库

  • sudo apt-get update 保证各个软件都是最新的,你将要下载很多东西,请保证网络畅通。
  • sudo apt-get install build-essential 安装编译OpenCV必不可少的依赖库
  • sudo apt-get install build-libavformat-dev该库提供一种音视频码流的编解码方法
  • sudo apt-get install ffmpeg该库提供音视频流的转码功能
  • sudo apt-get install python-opencv OpenCV所依赖的Python开发包
  • sudo apt-get install opencv-doc 安装OpenCV开发文档,万一你需要呢
  • sudo apt-get install libcv-dev 安装编译OpenCV所需要的头文件和静态库
  • sudo apt-get install libcvaux-dev安装更多的开发工具来编译OpenCV
  • sudo apt-get install libhighgui-dev安装另一个编译OpenCV所需要的头文件和静态库
  • cp -r /usr/share/doc/opencv-doc/examples /home/pi/ 将所有示例拷贝到你的根目录

4、准备摄像头 如果用USB摄像头那不用做什么可以直接使用,要使用树莓派自带摄像头的话参考下面方法:

  • 树莓派专用CSI摄像头插到树莓派的CSI口上并在在raspi-config中打开后就可以使用Raspistill命令直接使用,但如果在OpenCV中调用CSI摄像头会出现无数据的现象(cv2.VideoCapture(0)这时不会报错)。
    这是因为树莓派中的camera module是放在/boot/目录中以固件形式加载的,不是一个标准的V4L2的摄像头驱动,所以加载起来之后会找不到/dev/video0的设备节点。我们在/etc/modules里面添加一行bcm2835-v4l2(小写的L)就能解决问题。
    sudo nano /etc/modules 然后加上一行 bcm2835-v4l2 如图 最后重启
    这里写图片描述

ls /dev/查看有没有video0的设备
- 测试摄像头 把刚刚拷贝到根目录下的例程中 camera.py 复制出来,测试一下摄像头
cp /home/pi/examples/python/camera.py /home/pi/
python camera.py运行看有没有图像video0的设备

5、我们进入正题 二维码识别,我这里我们还需要装一个Python-zbar

输入命令sudo apt-get install python-zbar完成后直接使用下面程序运行

#!/usr/bin/env python  
#-*- coding: UTF-8 -*-   

# import the necessary packages
import simple_barcode_detection
import cv2
import numpy as np
import zbar
from PIL import Image

# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
font=cv2.FONT_HERSHEY_SIMPLEX
camera=cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    grabbed, frame = camera.read()
    if not grabbed:
        break
    pil= Image.fromarray(frame).convert('L')
    width, height = pil.size
    raw = pil.tobytes()
    zarimage = zbar.Image(width, height, 'Y800', raw)
    scanner.scan(zarimage)
    for symbol in zarimage:  
    # do something useful with results 
    if not symbol.count: 
            print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data 
        cv2.putText(frame,symbol.data,(20,100),font,1,(0,255,0),4)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

运行效果

这里写图片描述

下面是我电脑上的二维码
这里写图片描述

目前中文会乱码,还未解决,有时间解决还会更新。

6、相关参考文档

树莓派Zero摄像头是一款专为树莓派Zero微型计算机设计的外设,它允许用户将摄像头功能添加到树莓派上。这款摄像头采用USB OTG(On-The-Go)连接方式,无需额外电源适配器就能工作,非常适合空间有限、需要便携性的应用场合。 ### 主要特点: 1. **兼容性**:与所有基于Linux的操作系统兼容,包括树莓派自带的Raspbian OS,以及其他如Ubuntu、Debian等。 2. **USB OTG接口**:这种设计使得摄像头可以在不需要外部供电的情况下直接通过树莓派的USB接口获得所需的电力,简化了电路连接。 3. **高质量图像**:提供了清晰的图像捕获质量,适合用于视频会议、监控、教育演示等多种用途。 4. **即插即用**:一旦连接到树莓派,系统会自动识别并加载驱动程序,无需额外配置即可开始使用。 5. **多功能**:不仅可以用于拍摄照片和视频,还可以通过编程接入机器视觉、人脸检测等高级功能。 ### 使用方法: 1. **物理连接**:将摄像头的一端插入树莓派的USB接口,另一端如果需要的话可以接上电源适配器。 2. **初始化**:启动树莓派系统后,操作系统会自动加载摄像头驱动,并将其识别为一个可用的输入设备。 3. **编程访问**:使用编程语言(如Python、C++)和相应的库(如OpenCV)来读取摄像头的数据,进行处理和显示。 ### 相关问题: 1. 树莓派Zero摄像头如何与其他设备配合使用? 2. 能否对树莓派Zero摄像头的图像进行实时处理? 3. 树莓派Zero摄像头是否适用于专业级别的摄影或视频录制?
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值