SlideShare a Scribd company logo
1 of 33
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

More Related Content

Similar to Using openCV on Raspberry Pi

漫谈php和java
漫谈php和java漫谈php和java
漫谈php和javasulong
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunnerRack Lin
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践Na Lee
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plusDongxu Yao
 
Team1 - 拉亞計畫
Team1 - 拉亞計畫Team1 - 拉亞計畫
Team1 - 拉亞計畫nctusee
 
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)JoXuZi
 
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)LetAgileFly
 
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案 Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案 drewz lin
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿Liu Allen
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用Jerry Lin
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
電腦視覺與Open CV 影像處理簡介
電腦視覺與Open CV 影像處理簡介電腦視覺與Open CV 影像處理簡介
電腦視覺與Open CV 影像處理簡介艾鍗科技
 
Bluemix 智能機器人情境展示
Bluemix 智能機器人情境展示Bluemix 智能機器人情境展示
Bluemix 智能機器人情境展示湯米吳 Tommy Wu
 
PyCon China 2012 孙毅
PyCon China 2012 孙毅PyCon China 2012 孙毅
PyCon China 2012 孙毅Yi Sun
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验zhen chen
 
智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本ztl2004
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架Will Huang
 
Foundation of software development 2
Foundation of software development 2Foundation of software development 2
Foundation of software development 2netdbncku
 

Similar to Using openCV on Raspberry Pi (20)

漫谈php和java
漫谈php和java漫谈php和java
漫谈php和java
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunner
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plus
 
140921 - 出版
140921 - 出版140921 - 出版
140921 - 出版
 
Team1 - 拉亞計畫
Team1 - 拉亞計畫Team1 - 拉亞計畫
Team1 - 拉亞計畫
 
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
 
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
 
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案 Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
Top100summit东软 孙广宇-uni sdp基于html5构建的跨平台的统一智能设备解决方案
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
電腦視覺與Open CV 影像處理簡介
電腦視覺與Open CV 影像處理簡介電腦視覺與Open CV 影像處理簡介
電腦視覺與Open CV 影像處理簡介
 
Bluemix 智能機器人情境展示
Bluemix 智能機器人情境展示Bluemix 智能機器人情境展示
Bluemix 智能機器人情境展示
 
PyCon China 2012 孙毅
PyCon China 2012 孙毅PyCon China 2012 孙毅
PyCon China 2012 孙毅
 
人人网开发一站式体验
人人网开发一站式体验人人网开发一站式体验
人人网开发一站式体验
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本智能车软件设计浅谈 清华-张天雷-上传版本
智能车软件设计浅谈 清华-张天雷-上传版本
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
Foundation of software development 2
Foundation of software development 2Foundation of software development 2
Foundation of software development 2
 

More from CAVEDU Education

Google TPU Edge SBC_190424
Google TPU Edge SBC_190424Google TPU Edge SBC_190424
Google TPU Edge SBC_190424CAVEDU Education
 
From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...
From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...
From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...CAVEDU Education
 
BBC Micro:bit beginner project
BBC Micro:bit beginner projectBBC Micro:bit beginner project
BBC Micro:bit beginner projectCAVEDU Education
 
LINE Messaging API with LinkIt 7697
LINE Messaging API with LinkIt 7697 LINE Messaging API with LinkIt 7697
LINE Messaging API with LinkIt 7697 CAVEDU Education
 
Latte panda workshop_japan
Latte panda workshop_japanLatte panda workshop_japan
Latte panda workshop_japanCAVEDU Education
 
拿鐵熊貓外殼設計0707
拿鐵熊貓外殼設計0707拿鐵熊貓外殼設計0707
拿鐵熊貓外殼設計0707CAVEDU Education
 
LinkIt 7697 outer case - DesignSpark Mechanical / Onkscape
LinkIt 7697 outer case - DesignSpark Mechanical / OnkscapeLinkIt 7697 outer case - DesignSpark Mechanical / Onkscape
LinkIt 7697 outer case - DesignSpark Mechanical / OnkscapeCAVEDU Education
 
170615 國中小自造者教育師資培訓營
170615  國中小自造者教育師資培訓營170615  國中小自造者教育師資培訓營
170615 國中小自造者教育師資培訓營CAVEDU Education
 
170522_Raspberry Pi 相容開發板
170522_Raspberry Pi 相容開發板170522_Raspberry Pi 相容開發板
170522_Raspberry Pi 相容開發板CAVEDU Education
 
Maker Movement and Education in Taiwan
Maker Movement and Education in TaiwanMaker Movement and Education in Taiwan
Maker Movement and Education in TaiwanCAVEDU Education
 
物聯網教學與上海深圳maker行
物聯網教學與上海深圳maker行物聯網教學與上海深圳maker行
物聯網教學與上海深圳maker行CAVEDU Education
 
IBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker Faire
IBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker FaireIBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker Faire
IBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker FaireCAVEDU Education
 
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faireAAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faireCAVEDU Education
 
物聯網好棒棒 您專屬的IoT私有雲平台
物聯網好棒棒 您專屬的IoT私有雲平台物聯網好棒棒 您專屬的IoT私有雲平台
物聯網好棒棒 您專屬的IoT私有雲平台CAVEDU Education
 
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座FinalCAVEDU Education
 
LinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- BasicsLinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- BasicsCAVEDU Education
 
LinkIt ONE tutorial #2- Communication and cloud service
LinkIt ONE tutorial #2- Communication and cloud serviceLinkIt ONE tutorial #2- Communication and cloud service
LinkIt ONE tutorial #2- Communication and cloud serviceCAVEDU Education
 

More from CAVEDU Education (20)

Google TPU Edge SBC_190424
Google TPU Edge SBC_190424Google TPU Edge SBC_190424
Google TPU Edge SBC_190424
 
From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...
From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...
From computational Thinking to computational Action - Dr. Hal Abelson, MIT Ap...
 
180321 MIT見聞分享
180321   MIT見聞分享180321   MIT見聞分享
180321 MIT見聞分享
 
BBC Micro:bit beginner project
BBC Micro:bit beginner projectBBC Micro:bit beginner project
BBC Micro:bit beginner project
 
LINE Messaging API with LinkIt 7697
LINE Messaging API with LinkIt 7697 LINE Messaging API with LinkIt 7697
LINE Messaging API with LinkIt 7697
 
Latte panda workshop_japan
Latte panda workshop_japanLatte panda workshop_japan
Latte panda workshop_japan
 
拿鐵熊貓外殼設計0707
拿鐵熊貓外殼設計0707拿鐵熊貓外殼設計0707
拿鐵熊貓外殼設計0707
 
LinkIt 7697 outer case - DesignSpark Mechanical / Onkscape
LinkIt 7697 outer case - DesignSpark Mechanical / OnkscapeLinkIt 7697 outer case - DesignSpark Mechanical / Onkscape
LinkIt 7697 outer case - DesignSpark Mechanical / Onkscape
 
170615 國中小自造者教育師資培訓營
170615  國中小自造者教育師資培訓營170615  國中小自造者教育師資培訓營
170615 國中小自造者教育師資培訓營
 
170522_Raspberry Pi 相容開發板
170522_Raspberry Pi 相容開發板170522_Raspberry Pi 相容開發板
170522_Raspberry Pi 相容開發板
 
LinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorialLinkIt 7697 IoT tutorial
LinkIt 7697 IoT tutorial
 
Maker Movement and Education in Taiwan
Maker Movement and Education in TaiwanMaker Movement and Education in Taiwan
Maker Movement and Education in Taiwan
 
物聯網教學與上海深圳maker行
物聯網教學與上海深圳maker行物聯網教學與上海深圳maker行
物聯網教學與上海深圳maker行
 
161123
161123161123
161123
 
IBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker Faire
IBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker FaireIBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker Faire
IBM以雲端技術與物聯網創新產業應用@2016 New Taipei Maker Faire
 
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faireAAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
AAEON 當創客碰上UP板 - Intel Cherry Trail 高效能maker開發者平台@2016 new taipei maker faire
 
物聯網好棒棒 您專屬的IoT私有雲平台
物聯網好棒棒 您專屬的IoT私有雲平台物聯網好棒棒 您專屬的IoT私有雲平台
物聯網好棒棒 您專屬的IoT私有雲平台
 
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
絕地武士心靈控制家用雲端智慧型物聯網光劍搭載無線路由器光劍底座Final
 
LinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- BasicsLinkIt ONE tutorial #1- Basics
LinkIt ONE tutorial #1- Basics
 
LinkIt ONE tutorial #2- Communication and cloud service
LinkIt ONE tutorial #2- Communication and cloud serviceLinkIt ONE tutorial #2- Communication and cloud service
LinkIt ONE tutorial #2- Communication and cloud service
 

Using openCV on Raspberry Pi

Editor's Notes

  1. compare() , inRange() , threshold() , adaptiveThreshold() , Canny()