2016年11月29日 星期二

學習如何從emgucv的官方範例去學習滑鼠追蹤控制的程式_學弟提問怎麼做滑鼠偵測部分_part1先解決滑鼠座標取得




首先在我們下載下來 這學期 針對 "影像及視訊作分析處裡"的電腦視覺API

中去他下載下來的範例包中Run 程式


先 執行程式  看效果




這裡我簡化介面了~~~
還有這個範例你是無法直接執行的



官方範例會先包裝很多使用例子給寫程式的初學者作學習喔 !!!!


往後可能你們接觸到的不是這個工具

就一樣的學習方法

哪天你去其他地方或者不是學校的工作場所甚至可能是即將到來的專研
可能就會用到不一樣的工具開發包
(可能有: 無人機、Android上的、Kinect、leapmotion甚至VR 、Unity等等)

 通常是需要花一些時間跟這些各式各樣的功能去好好認識一下的

一個概念  一個軟體工具(Application Programming Interface)
開發出來給別人用
通常會配有學習例子!!!!!








同學必須學習去跑這些程式範例作後續學習


首先同學問的滑鼠  ---->   翻成  英文  mouse  !!!


你看看   我在官方下載下來整包中的範例

我就察看到這個字眼了耶~~~~~~

這個範例主要是利用到不久前教大家寫人臉偵測的那個例子後續的應用喔



像我目前是放在

C:\emgucv2.4.10\libemgucv-windows-universal-2.4.10.1940\


這個目錄下
C:\emgucv2.4.10\libemgucv-windows-universal-2.4.10.1940\Emgu.CV.Example


這裡就有提供學習範例喔 !!!!




然後這裡我有經驗跟你說一聲

你是無法直接跑這個範例程式的~~





我這裡嘗試過其他範例會遇到無法執行問題的排除

通常其他範例

只要

Step1. 先將 不吉利金字塔刪除  重新作載入就可以跑了



Step2. 多數  Emgucv 這套工具的官方範例都有用到 UI 的組件
所以要做重新載入的步驟





不過嘗試過多次後都無用!!!!



所以建議有要學習研究這部分的同學
依照一直以來教大家的環境配置流程  以及  人臉偵測配置檔案放的位置作存放



============================================



這裡我是開啟新專案把程式

在寫一次
並做好之前跟大家講的細節環境配置


來讓他成功執行的


這裡要小心  如果你  添加的 dll檔案  版本不同就會出現跟我一樣的錯誤
向我目前都是用  2.4.10  這個版本作示範的


這裡 我不小心   添加到      3.1    Emgu.CV.UI.dll 的檔案



後來再改成   2.4.10 添加好 組件後


就可以把組件成功拉放好




官方程式碼唯一有不同的 滑鼠控制移動的 程式區塊就是這部分

你需要引用 using System.Runtime.InteropServices;


之後這部分就變成比較健康的綠色




這是第一部分



2016年11月25日 星期五

Semmagame遊戲原理研究




一開始我們觀察一下

這個遊戲怎麼布局的






右上角顯示一個人的視訊畫面  然後做過偵測處理



後面就遊戲背景







一樣先有一個畫面更新顯示!!


使用教大家的開視訊



背景有一個遊戲主畫面


使用教大家的載入圖片

這裡我就先截它遊戲的圖
反正左上角會被我的視訊畫面蓋掉



程式第一階段 _ 先模擬這款遊戲初始畫面




目前程式碼


bin  -->  data




很簡單吧~~~




接下來就是怎麼操控偵測



先前的版本是用顏色偵測 (那之前有在物件追蹤部分教過了)



還記得我們剛剛有稍微介紹到 背景相減的原理

這個遊戲也有用到這個原理

抓取 方框(BoundingBox)







這個範例目前視作找輪廓捕捉到的缺洞處

仔細看一下

執行效果

跟對應程式碼



在變數宣告處

我們多宣告了




那盡皆在嘗試找看看 左上角的座標點





手部輪廓提取_流程_背景相減

在這個程式的範例中
可以試著去把  讀影片改成 視訊






最後呈現出來的該張影像
可以看到一個   Bolb Detect 呈現出來的區塊影像

是影像中的一組像素串連起來的群體組合(具有共同亮度階層資訊)


這裡用到了背景相減的原理


圖片出處: http://dparks.wikidot.com/background-subtraction


那原則上在你建立好一個背景模型後

適當的調整門檻值可以獲得想要的目標像素資訊








openframeworks暖身_part2_載入圖片_視窗標題設置_改背景色_視窗模式切換結合按鈕事件_練習跑範例

目標:
(1)oF如何載入圖像
【學習具有載入圖像的能力】

(2)oF如何進行視窗標題設置
【學習具有設置視窗標題的能力】

(3)oF如何進行背景色更改

【學習具有背景色更改的能力】

(4)oF如何進行視窗模式切換結合按鈕事件

if  判斷語法

【學習具有視窗模式切換結合按鈕事件的能力】



新增專案

projectgenerator



預設專案位置不要忘記在哪裡





(1)oF如何載入圖像


【學習具有載入圖像的能力】
openframeworks   載入圖像需要的變數型態


ofImage

ofApp.h   

【主要的變數宣告區域】

在  ofApp.h 區塊進行宣告



ofApp.cpp   


【主要的參數配置、事件撰寫區域】

在  setup 區塊進行  load函數調用



法一. 圖片資源統一放法
image.load("圖檔名稱");  
// 圖檔資源要放置於專案bin/data目錄下



法二. 絕對路徑法
image.load("路徑\\圖檔名稱");
image.load("路徑/圖檔名稱");



法一. 圖片資源統一放法




法二. 絕對路徑法


容易出錯部分請小心








在  draw 區塊進行  draw函數調用




設置左上角起始座標位置用來控制顯示位置的
(擺 ofApp::draw)

image.draw(0,0);  // Top Left corner








(2)oF如何進行視窗標題設置


【學習具有設置視窗標題的能力】

設置視窗名稱  (放置ofApp::setup區塊)

ofSetWindowTitle("the title");





(3)oF如何進行背景色更改


【學習具有背景色更改的能力】

設置背景色(放置ofApp::setup區塊)

寫法一.    ofSetBackgroundColor(r , g , b) ;





寫法二.  ofBackground(r ,g ,b);




(4)oF如何進行視窗模式切換結合按鈕事件




【學習具有視窗模式切換結合按鈕事件的能力】


我們切至   我們的main.cpp區塊

視窗模式其實有分為兩種顯示模式




OF_WINDOW

=> 會依照你指定的寬高去做顯示








OF_FULLSCREEN

=> 會直接佔滿你的全部螢幕







再來跟大家介紹  按鈕事件的撰寫


按鈕事件的撰寫區塊主要位於

ofApp.cpp  區塊





我們貼心的  oF  已經幫我們在

ofApp.h  區塊  進行函數的prototype  了呦




以 keyPressed  為例  是一個會回傳型態為int 的
鍵盤數值函數

我們要添加一個

按1就切換成全螢幕
按2就切換成原螢幕

=======>  想法就好比如電源的開關  on/off

在電腦世界就是  1/0  也就是  true/false









螢幕按鈕切換

 



除了變換這個
我們也可以試試看變換背景色

背景色按鈕切換

 





熱身結束


=========================================================================

緊接著

試著跑一個

opencv的範例




openframeworks_opencv範例執行不了_疑難排解


最近在執行程式時一直吃鱉

我們趕快來下載解碼器


附上 link: http://123.briian.com/forum.php?mod=viewthread&tid=335

安裝完後  執行exe檔







緊接著再次執行程式


就正常可以Run了  開心