Raspberry Pi 研習營
CAVE Education
徐豐智
E-mail:jesusvictory777@cavedu,com
1
Session 5: 用視覺程式庫偵測
彩色物件
2
OpenCV
• 環境設定
• 更多簡單的範例
– 讀圖&高斯模糊
– 開啟攝影機
• OpenCV 專案
– 影像差異
– 歷史移動影像
– 背景相減
– 人臉偵測
關於OpenCV
• OpenCV(開放原始碼之電腦視覺)主要是針對在
及時計算機視覺庫的一種編程功能。
– 人機介面(HCI)
– 物體識別
– 切割辨識
– 人臉辨識
– 手勢辨識
– 移動偵測
– 動作認知
– 場景重構(Structure From Motion)
– 立體聲和多台攝影機校準及深度計算
– 移動機器人.
首先準備
• 裝備視覺函式庫opencv
• 包含opencv函式庫的Rpi主程式
– Raspbian openCV img 檔下載
– 或自行安裝(page7)
• 裝備攝影機webcam
– 確認安裝資料夾
– $cd /dev
– $ls
– 尋找video0
5
視訊套件
• luvcview(Linux USB Video Class View)
– $which luvcview
– $sudo apt-get install luvcview
– $luvcview –s 320X240
• Guvcview
– $sudo apt-get install guvcview
– $sudo guvcview
6
自行安裝視覺函式庫
• 已燒錄rpiopencv.img的SD卡,請跳過此頁
– $sudo apt-get update
• 安裝轉譯程式
– $sudo apt-get install build-essential
• 聲音與影像的編碼和解碼
– $sudo apt-get install libavformat
• 聲音與影像的轉碼
– $sudo apt-get install ffmpeg
7
自行安裝視覺函式庫
• 已燒錄rpiopencv.img的SD卡,請跳過此頁
• Opencv基本函式庫
– $sudo apt-get install libcv2.3 libcvaux2.3
libhighgui2.3
• Opencv-python版套件
– $sudo apt-get install python-opencv
• Opencv技術文件
– $sudo apt-get install opencv-doc
8
自行安裝視覺函式庫
• 已燒錄rpiopencv.img的SD卡,請跳過此頁
• 顯示更多用來編譯opencv的開發工具
– $sudo apt-get install libcvaux-dev
• 顯示opencv標頭檔和靜態資料庫
– $sudo apt-get install libcv-dev
• 另一個顯示opencv標頭檔和靜態資料庫
– $sudo apt-get install libhighgui-dev
9
OpenCV函式庫網站
• Opencv函式網站
• http://docs.opencv.org/2.4.9/modules/refm
an.html
• 視覺辨識入門網站
• http://www.csie.ntnu.edu.tw/~u91029/Imag
e.html
10
Opencv開啟攝影機
• $cp /home/pi/opencv2.4.9/
• samples/python/camera.py camera.py
• $sudo python camera.py
– /home/pi/opencv2.4.9/samples/python/camera
.py
11
camera.py
• import cv2.cv as cv:匯入opencv資料庫
• import time:匯入時間資料庫
• 1、cv.NamedWindow(“camera”, 1):建立一個展示
畫面的視窗
• 2、capture = cv.CaptureFromCAM(0):建立攝影
機與畫面的結構
• 3、cv.SetCaptureProperty(capture, 3, 360):設定
畫面寬度
• 4、cv.SetCaptureProperty(capture, 4, 240):設定
高度
12
camera.py
• while True: #建立顯示畫面的迴圈
• img = cv.QueryFrame(capture)#捕捉畫面並指定
於img
• cv.ShowImage(“camera”, img)#將img定位於視窗
• if cv.WaitKey(10) == 27#按下ESC鍵結束
• break
• cv.DestroyAllWindows()
13
偵測彩色物件
• camera2.py,或在camrea.py增加指令
14
camera2.py(從camera.py修改)
15
16
camera2.py
• cv.Smooth(img,img,cv.CV_BLUR,3)#將圖像平滑化,
去除較大的偏差
• hue_img = cv.CreateImage(cv.GetSize(img), 8, 3)#
產生一個預設畫面,可以保存下面程式的色調
• cv.CvtColor(img,hue_img, cv.CV_BGR2HSV)#儲存
色度、彩度、亮度畫面
• threshold_img =
cv.CreateImage(cv.GetSize(hue_img), 8, 1)#再建立
一個黑白畫面、將非特定顏色設為黑色
17
camera2.py
• cv.InRangeS(hue_img, (38,120,60),(75,
255, 255), threshold_img)
– #將(38,120,60),(75, 255, 255)為特定顏色的彩
色範圍
– #Python: cv.InRangeS(src, lower, upper, dst)
18
圖像平滑化演算
• CV_BLUR_NO_SCALE
• CV_BLUR
• CV_GAUSSIAN
• CV_MEDIAN
19
平滑化是什麼?
• 原圖 使用濾鏡
20
平滑化是什麼?
• 銳利化的結果比較
21
平滑化是什麼?
• SIZE是什麼?
22
高斯矩陣範例
23
中值濾波器
24
HSL與HSV色彩空間(wiki)
• HSL
• Hue,Saturation,Lightness
• HSV、HSB
• Hue, Saturation, Value
• Hue, Saturation, Brightness
25
HSL與HSV色彩空間(wiki)
26
HSL與HSV色彩空間(wiki)
27
• 使用色度偵測色彩教學:
• http://www.shervinemami.info/colorConver
sion.html
• 查詢RGB、HSV、HEX數值
• http://www.colorspire.com/
•
28
在周圍畫上綠色框線
• 下載camera3.py,或在camrea2.py修改
• 網址:
– https://sites.google.com/a/cavedu.com/www/fil
e
29
camera3.py(修改camera2.py)
30
camera3.py(程式碼)
31
camera3.py
• storage = cv.CreateMemStorage(0)
• #建立操控畫面的記憶體空間
• contour = cv.FindContours(threshold_img, storage,
cv.CV_RETR_CCOMP,
cv.CV_CHAIN_APPROX_SIMPLE)
• #尋找在臨界門檻值內的區塊
• points = [] #建立保存不同色點的陣列
• while contour: #檢查所有迴圈內的輪廓
• rect = cv.BoundingRect(list(contour))
• #對彩色區塊建立一個封閉的長方形
32
camera3.py
• contour = contour.h_next() #為下一個輪廓準備
• size = (rect[2]*rect[3])
• #計算長方形的面積
• if size>100: #大小大於100像素
• pt1=(rect[0],rect[1])
• #長方形左側X、Y座標
• pt2=(rect[0]+rect[2],rect[1]+rect[3])
• cv.Rectangle(img, pt1, pt2, ))
• #在指定的位置上畫一個長方形
33

Using openCV on Raspberry Pi

Editor's Notes

  • #19 compare() , inRange() , threshold() , adaptiveThreshold() , Canny()