using opencv on raspberry pi

33
Raspberry Pi 研研研 CAVE Education 研研研 E-mail:jesusvictory777@cavedu,com 1

Upload: cavedu-education

Post on 13-Jan-2017

2.815 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Using openCV on Raspberry Pi

1

Raspberry Pi 研習營CAVE Education徐豐智

E-mail:jesusvictory777@cavedu,com

Page 2: Using openCV on Raspberry Pi

2

Session 5: 用視覺程式庫偵測彩色物件

Page 3: Using openCV on Raspberry Pi

OpenCV

• 環境設定• 更多簡單的範例

–讀圖 &高斯模糊–開啟攝影機

• OpenCV 專案–影像差異–歷史移動影像–背景相減–人臉偵測

Page 4: Using openCV on Raspberry Pi

關於 OpenCV• OpenCV(開放原始碼之電腦視覺)主要是針對在及時計算機視覺庫的一種編程功能。

– 人機介面 (HCI)– 物體識別– 切割辨識– 人臉辨識– 手勢辨識– 移動偵測– 動作認知– 場景重構 (Structure From Motion)– 立體聲和多台攝影機校準及深度計算– 移動機器人 .

Page 5: Using openCV on Raspberry Pi

5

首先準備• 裝備視覺函式庫 opencv• 包含 opencv函式庫的Rpi主程式

– Raspbian openCV img 檔下載– 或自行安裝(page7)

• 裝備攝影機webcam– 確認安裝資料夾– $cd /dev– $ls– 尋找 video0

Page 6: Using openCV on Raspberry Pi

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

Page 7: Using openCV on Raspberry Pi

7

自行安裝視覺函式庫• 已燒錄 rpiopencv.img的 SD卡,請跳過此頁

– $sudo apt-get update• 安裝轉譯程式

– $sudo apt-get install build-essential• 聲音與影像的編碼和解碼

– $sudo apt-get install libavformat• 聲音與影像的轉碼

– $sudo apt-get install ffmpeg

Page 8: Using openCV on Raspberry Pi

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

Page 9: Using openCV on Raspberry Pi

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

Page 11: Using openCV on Raspberry Pi

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

Page 12: Using openCV on Raspberry Pi

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):設定高度

Page 13: Using openCV on Raspberry Pi

13

camera.py

• while True: #建立顯示畫面的迴圈• img = cv.QueryFrame(capture)#捕捉畫面並指定於 img• cv.ShowImage(“camera”, img)#將 img定位於視窗• if cv.WaitKey(10) == 27#按下 ESC鍵結束• break• cv.DestroyAllWindows()

Page 14: Using openCV on Raspberry Pi

14

偵測彩色物件• camera2.py,或在 camrea.py增加指令

Page 15: Using openCV on Raspberry Pi

15

camera2.py(從 camera.py修改 )

Page 16: Using openCV on Raspberry Pi

16

Page 17: Using openCV on Raspberry Pi

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)#再建立一個黑白畫面、將非特定顏色設為黑色

Page 18: Using openCV on Raspberry Pi

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)

Page 19: Using openCV on Raspberry Pi

19

圖像平滑化演算• CV_BLUR_NO_SCALE• CV_BLUR• CV_GAUSSIAN• CV_MEDIAN

Page 20: Using openCV on Raspberry Pi

20

平滑化是什麼 ?

• 原圖 使用濾鏡

Page 21: Using openCV on Raspberry Pi

21

平滑化是什麼 ?

• 銳利化的結果比較

Page 22: Using openCV on Raspberry Pi

22

平滑化是什麼 ?

• SIZE是什麼 ?

Page 23: Using openCV on Raspberry Pi

23

高斯矩陣範例

Page 24: Using openCV on Raspberry Pi

24

中值濾波器

Page 25: Using openCV on Raspberry Pi

25

HSL與 HSV色彩空間 (wiki)

• HSL• Hue, Saturation, Lightness

• HSV、 HSB• Hue, Saturation, Value• Hue, Saturation, Brightness

Page 26: Using openCV on Raspberry Pi

26

HSL與 HSV色彩空間 (wiki)

Page 27: Using openCV on Raspberry Pi

27

HSL與 HSV色彩空間 (wiki)

Page 28: Using openCV on Raspberry Pi

28

• 使用色度偵測色彩教學 :• http://

www.shervinemami.info/colorConversion.html

• 查詢 RGB、 HSV、 HEX數值• http://www.colorspire.com/

Page 29: Using openCV on Raspberry Pi

29

在周圍畫上綠色框線• 下載 camera3.py,或在 camrea2.py修改• 網址 :

– https://sites.google.com/a/cavedu.com/www/file

Page 30: Using openCV on Raspberry Pi

30

camera3.py(修改 camera2.py)

Page 31: Using openCV on Raspberry Pi

31

camera3.py(程式碼 )

Page 32: Using openCV on Raspberry Pi

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))• #對彩色區塊建立一個封閉的長方形

Page 33: Using openCV on Raspberry Pi

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, ))• #在指定的位置上畫一個長方形