2016年9月14日 星期三

第一次作業_emgucv2.4.10版配置方法_HSV通道分割



opencv版本
可參考之前學長寫的簡單code

https://gist.github.com/anonymous/0ce6a32ddf6ebd5ce64e



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

這學期多學一個 emgucv 寫法


目標: HSV通道可分割!!!







這學期參考教學
官方文件:





Step1. 去官網下載 Emgucv2.4.10




選  zip 檔 解壓縮完 

放置C槽 取好指定目錄名稱  命名最好明確好辨認



Step2. 做dll配置

去系統環境變數設定PATH

打上 
C:\emgucv2.4.10\libemgucv-windows-universal-2.4.10.1940\bin\x86
C:\emgucv2.4.10\libemgucv-windows-universal-2.4.10.1940\bin\x64
依據你電腦的系統   做設定



有問題就換 x86

設好環境變數後   重啟電腦



新增好  WinForm 專案後做dll配置


對右側 Reference 按右鍵 Add Reference(添加參考)-->Browse 去

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

把這三個dll加入

Emgu.CV.dll
Emgu.CV.UI.dll
Emgu.Util.dll



記住  在 bin 目錄喔!!!

這是最基本的三個   dll 檔案

可以讓你們開啟視訊做一些基本影像處理

如果後續有額外要做進階功能

就把剩下的都加進去

這裡我就先加  這三個  dll 檔






同學可以視情況  一般直接用內附的 pictureBox 就夠了





Step3. CvInvoke例外錯誤排除

為了避免  CvInvoke 出錯

EMGU.CV.Invoke Exception

這邊我們需要改變一下  是去組態-->組態管理員-->改成x64






Step3. HSV 通道分割  靜態影像處理


這裡視窗配置我先 拉 四個 視窗



我們再多添加一個 按鈕來讀圖


記得  pictureBox   的   sizeMode 屬性  設置為 StretchImage



讀圖的按鈕事件



Image(TColor, TDepth) Class


Image<TColor, TDepth>用兩個參數定義:Color和Depth
TColor类型TDepth类型
GrayByte
Bgr (Blue Green Red)SByte
Bgra (Blue Green Red Alpha)Single (float)
Hsv (Hue Saturation Value)Double
Hls (Hue Lightness Saturation)UInt16
Lab (CIE L*a*b*)Int16
Luv (CIE L*u*v*)Int32 (int)
Xyz (CIE XYZ.Rec 709 with D65 white point)
Ycc (YCrCb JPEG)



範例

        // 創建一張灰度圖 
        Image<Gray, Byte> imgGray = new Image<Gray, Byte>( 480 , 320 );
         // 創建一張藍色的圖片 
        Image<Bgr, Byte> imgBlue = new Image<Bgr , Byte>( 480 , 320 , new Bgr( 255 , 0 , 0 ));
        
         // 從文件創建Image 
        Image<Bgr, Byte> imgFile = new Image<Bgr, Byte>( " MyImage.jpg " );
         
        // 從Bitmap創建Image 
        Bitmap bmp = new Bitmap( " MyImage.jpg " );
        Image<Bgr, Byte> imgBmp = new Image<Bgr, Byte>(bmp);


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




通道分割函數方法



Image(TColorTDepth).Split Method

Split current Image into an array of gray scale images where each element in the array represent a single color channel of the original image




http://www.emgu.com/wiki/files/2.4.10/document/html/7b35099c-b411-06b1-561a-d8bedd33b4a7.htm




按鈕  按下觸發顏色空間轉換及通道分割事件




同學   之後可以練習看看   YCbCr  色彩空間轉換唷


再前幾篇有教過大家  RGB 分割   這篇是教HSV   方法差不多

加油~~


可以想看看  HSV   到底可以拿來幹嘛用的喔

這裡解決一些以前時常我會覺得疑惑的地方

到底  HSV 跟  HSB  差在哪裡
有些書上或文章這兩個都出現過

其實

HSV當中的

H(Hues)代表色相(色彩)

S(Saturation)代表飽和度(深淺), S = 0時,只有灰度

V(Value)代表色調(明暗)也有人稱明度,表示色彩的明亮程度
也有人用 B(Brightness)表示




在概念上可以被認為是顏色的倒圓錐體(黑點在下頂點,白色在上底面圓心)



HSV(B)模型將亮度B(Brightness)變數由色彩變數中抽離出來,
也就是說色彩歸色彩,並不帶有亮度的成分,
因此混色時不會有加減亮度的情形發生。




HSV在用於指定顏色分割時,有比較大的作用
H和S分量代表了色彩信息


用H和S分量來表示顏色距離,顏色距離指代表兩種顏色之間的數值差異。







get hue value on mouse position






(0,480) ------>  抓取 Hue 範圍 後 藉由 Blob Detect 畫紅圓上去



之後的應用

Camshift的物件追蹤方法 可作為參考

http://www.slideshare.net/NoahChou/camshift

沒有留言:

張貼留言