1、安裝樹莓派鏡像,SSH,VNC等這裡就不介紹了很簡單大家自行百度。
2、我沒有用VNC 是以裝了teamviewer用于樹莓派遠端控制
安裝教程參考:http://blog.csdn.net/shaopengf/article/details/75072907
3、安裝一個功能齊全的OenpCV視覺庫
-
保證各個軟體都是最新的,你将要下載下傳很多東西,請保證網絡暢通。sudo apt-get update
-
安裝編譯OpenCV必不可少的依賴庫sudo apt-get install build-essential
-
該庫提供一種音視訊碼流的編解碼方法sudo apt-get install build-libavformat-dev
-
該庫提供音視訊流的轉碼功能sudo apt-get install ffmpeg
-
OpenCV所依賴的Python開發包sudo apt-get install python-opencv
-
安裝OpenCV開發文檔,萬一你需要呢sudo apt-get install opencv-doc
-
安裝編譯OpenCV所需要的頭檔案和靜态庫sudo apt-get install libcv-dev
-
安裝更多的開發工具來編譯OpenCVsudo apt-get install libcvaux-dev
-
安裝另一個編譯OpenCV所需要的頭檔案和靜态庫sudo apt-get install libhighgui-dev
-
将所有示例拷貝到你的根目錄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
樹莓派自帶攝像頭OpenCV圖像識别-二維碼識别
用
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()
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,(,),font,,(,,),)
cv2.imshow('frame',frame)
if cv2.waitKey() & == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
運作效果
樹莓派自帶攝像頭OpenCV圖像識别-二維碼識别
下面是我電腦上的二維碼
目前中文會亂碼,還未解決,有時間解決還會更新。
6、相關參考文檔
- OpenCV https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html
- Python-zbar https://sourceforge.net/p/zbar/wiki/Home/