Upload
cavedu-education
View
2.812
Download
2
Embed Size (px)
Citation preview
1
Raspberry Pi 研習營CAVE Education徐豐智
E-mail:jesusvictory777@cavedu,com
2
Session 5: 用視覺程式庫偵測彩色物件
OpenCV
• 環境設定• 更多簡單的範例
–讀圖 &高斯模糊–開啟攝影機
• OpenCV 專案–影像差異–歷史移動影像–背景相減–人臉偵測
關於 OpenCV• OpenCV(開放原始碼之電腦視覺)主要是針對在及時計算機視覺庫的一種編程功能。
– 人機介面 (HCI)– 物體識別– 切割辨識– 人臉辨識– 手勢辨識– 移動偵測– 動作認知– 場景重構 (Structure From Motion)– 立體聲和多台攝影機校準及深度計算– 移動機器人 .
5
首先準備• 裝備視覺函式庫 opencv• 包含 opencv函式庫的Rpi主程式
– Raspbian openCV img 檔下載– 或自行安裝(page7)
• 裝備攝影機webcam– 確認安裝資料夾– $cd /dev– $ls– 尋找 video0
6
視訊套件• luvcview(Linux USB Video Class View)
– $which luvcview– $sudo apt-get install luvcview– $luvcview –s 320X240
• Guvcview– $sudo apt-get install guvcview– $sudo guvcview
7
自行安裝視覺函式庫• 已燒錄 rpiopencv.img的 SD卡,請跳過此頁
– $sudo apt-get update• 安裝轉譯程式
– $sudo apt-get install build-essential• 聲音與影像的編碼和解碼
– $sudo apt-get install libavformat• 聲音與影像的轉碼
– $sudo apt-get install ffmpeg
8
自行安裝視覺函式庫• 已燒錄 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
9
自行安裝視覺函式庫• 已燒錄 rpiopencv.img的 SD卡,請跳過此頁• 顯示更多用來編譯 opencv的開發工具
– $sudo apt-get install libcvaux-dev• 顯示 opencv標頭檔和靜態資料庫
– $sudo apt-get install libcv-dev• 另一個顯示 opencv標頭檔和靜態資料庫
– $sudo apt-get install libhighgui-dev
10
OpenCV函式庫網站• Opencv函式網站• http://
docs.opencv.org/2.4.9/modules/refman.html
• 視覺辨識入門網站• http://www.csie.ntnu.edu.tw/~
u91029/Image.html
11
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
12
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):設定高度
13
camera.py
• while True: #建立顯示畫面的迴圈• img = cv.QueryFrame(capture)#捕捉畫面並指定於 img• cv.ShowImage(“camera”, img)#將 img定位於視窗• if cv.WaitKey(10) == 27#按下 ESC鍵結束• break• cv.DestroyAllWindows()
14
偵測彩色物件• camera2.py,或在 camrea.py增加指令
15
camera2.py(從 camera.py修改 )
16
17
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)#再建立一個黑白畫面、將非特定顏色設為黑色
18
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)
19
圖像平滑化演算• CV_BLUR_NO_SCALE• CV_BLUR• CV_GAUSSIAN• CV_MEDIAN
20
平滑化是什麼 ?
• 原圖 使用濾鏡
21
平滑化是什麼 ?
• 銳利化的結果比較
22
平滑化是什麼 ?
• SIZE是什麼 ?
23
高斯矩陣範例
24
中值濾波器
25
HSL與 HSV色彩空間 (wiki)
• HSL• Hue, Saturation, Lightness
• HSV、 HSB• Hue, Saturation, Value• Hue, Saturation, Brightness
26
HSL與 HSV色彩空間 (wiki)
27
HSL與 HSV色彩空間 (wiki)
28
• 使用色度偵測色彩教學 :• http://
www.shervinemami.info/colorConversion.html
• 查詢 RGB、 HSV、 HEX數值• http://www.colorspire.com/
29
在周圍畫上綠色框線• 下載 camera3.py,或在 camrea2.py修改• 網址 :
– https://sites.google.com/a/cavedu.com/www/file
30
camera3.py(修改 camera2.py)
31
camera3.py(程式碼 )
32
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))• #對彩色區塊建立一個封閉的長方形
33
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, ))• #在指定的位置上畫一個長方形