Upload
cavedu-education
View
507
Download
5
Embed Size (px)
Citation preview
關於OpenCV
• OpenCV(開放原始碼之電腦視覺)主要是針對在及時計算機視覺庫的一種編程功能。– 人機介面(HCI)– 物體識別– 切割辨識– 人臉辨識– 手勢辨識– 移動偵測– 動作認知– 場景重構(Structure From Motion)– 立體聲和多台攝影機校準及深度計算– 移動機器人.
首先準備
• 裝備視覺函式庫opencv
• 包含opencv函式庫的Rpi主程式
– Raspbian openCV img檔下載
• 裝備攝影機webcam
–確認安裝資料夾
– $cd /dev
– $ls
–尋找video05
自行安裝視覺函式庫
• 已燒錄rpiopencv.img的SD卡,請跳過此頁
– $sudo apt-get update
• 安裝轉譯程式
– $sudo apt-get install build-essential
• 聲音與影像的編碼和解碼
– $sudo apt-get install libavformat
• 聲音與影像的轉碼
– $sudo apt-get install ffmpeg
6
自行安裝視覺函式庫
• 已燒錄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
7
自行安裝視覺函式庫
• 已燒錄rpiopencv.img的SD卡,請跳過此頁
• 顯示更多用來編譯opencv的開發工具
– $sudo apt-get install libcvaux-dev
• 顯示opencv標頭檔和靜態資料庫
– $sudo apt-get install libcv-dev
• 另一個顯示opencv標頭檔和靜態資料庫
– $sudo apt-get install libhighgui-dev
8
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):設定高度
10
camera.py
• while True: #建立顯示畫面的迴圈
• img = cv.QueryFrame(capture)#捕捉畫面並儲存於img
• cv.ShowImage(“camera”, img)#將img定位於視窗
• if cv.WaitKey(10) == 27#按下ESC鍵結束
• break
• cv.DestroyAllWindows()
11
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)#再建立一個黑白畫面、將非特定顏色設為黑色
15
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)
16
HSL與HSV色彩空間(wiki)
• HSL
• Hue,Saturation,Lightness
• HSV、HSB
• Hue, Saturation, Value
• Hue, Saturation, Brightness
23
• 使用色度偵測色彩教學:
• http://www.shervinemami.info/colorConversion.html
• 查詢RGB、HSV、HEX數值
• http://www.colorspire.com/
•
26
在周圍畫上綠色框線
• 下載camera3.py,或在camrea2.py修改
• 網址:
– https://sites.google.com/a/cavedu.com/www/file
27
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))
• #對彩色區塊建立一個封閉的長方形
30