OpenCV 3.0 正式推出!

經過幾次的延遲,OpenCV 這套相當知名的電腦視覺函式庫終於堆出 3.0 的正式版了!他的官方網站是:

http://opencv.org/

而官方的公告則可以參考:http://opencv.org/opencv-3-0.html

基本上,OpenCV 這套跨平台、開放原始碼的電腦視覺函式庫算是這個領域相當老牌、知名的函式庫,它提供了許多電腦視覺、影像處理相關的函式庫,讓大家要開發程式時可以相當方便地開發~

閱讀更多»

K4W v2 C++ Part 5:簡單的去背程式

在上一篇《讀取人體位置(Body Index)》裡,已經簡單地介紹過 Kinect for Windows SDK v2 所提供的人體追蹤的功能、也就是 Body Index 的部分了。

而當時,只有簡單地把這張圖裡面不同人、用不同的顏色畫出來而已。但是如果希望有進一步地應用,可以怎麼做呢?最簡單的想法,應該就是拿來做去背、也就是把背景去除了~

像下圖就是一個很簡單的去背、把人貼道別張照片上的例子:

閱讀更多»

K4W v2 C++ Part 4:讀取人體位置(Body Index)

之前已經寫過《使用 OpenCV 顯示深度影像》和《讀取彩色影像與紅外線影像》,基本上,算是把把 Kinect 能拿到的影像資料的原始資料,都介紹過了。

而實際上,除了深度、彩色、紅外線影像這些算是原始資料外,Kinect for Windows SDK 能提供的影像資料,還有一種,那就是經過分析的結果:Body Index。

Body Index 在 K4W SDK v2 裡面,他的 frame source 的介面是 IBodyIndexFrameSourceMSDN),基本上是用來代表人體在深度畫面中,所佔位置的影像資料。在 K4W SDK 目前的系統下,最多能追蹤六個人,而 Body Index 就是用來告訴程式開發者,現在這六個人個別在畫面裡的哪個位置的。

而這資料能用來幹嘛呢?最直接的用法,就是在程式執行時,可以讓操作只知道自己在感應器的視角裡的樣子、確定偵測到的是對的。再來,對於開發者來說,也可以用來做操作者的簡單的位置偵測、或是去背的動作。

閱讀更多»

K4W v2 C++ Part 3:讀取彩色影像與紅外線影像

在之前的《Part 1:簡單的深度讀取方法》已經解釋過,要怎麼在 C++ 的環境下、讀取 Kinect for Windows v2 的深度影像了,而在《Part 2:使用 OpenCV 顯示深度影像》,也示範了怎麼把深度影像用 OpenCV 畫出來了。接下來這篇,則是來簡單講一下,怎麼讀取彩色影像和紅外線影像吧!

首先,在《Kinect for Windows SDK v2 C++ API 簡介》一文中有提過,K4W SDK v2 有提供許多 Frame Source 的介面,深度影像的 IDepthFrameSource 就是其中一種;而其他原始的資料來源,則還包含了彩色影像的 IColorFrameSourceMSDN)、以及紅外線影像的 IInfraredFrameSourceMSDN)和 ILongExposureInfraredFrameSourceMSDN)。

閱讀更多»

K4W v2 C++ Part 2:使用 OpenCV 顯示深度影像

前一篇《簡單的深度讀取方法》已經大概解釋過 Kinect for Windows SDK v2 要怎麼讀取深度影像了~不過,由於沒有使用圖形介面,所以只能輸出單一點的深度,基本上算是比較難驗證讀出來的結果的。所以這一篇,就使用 OpenCV,來把深度影像畫出來吧~

這邊選擇使用 OpenCV(官網)的原因很簡單,那就是他應該是搭配 C++、可以最簡單地把一張圖畫出來的函式庫了~而 Heresy 這邊是採用 OpenCV 3.0 Beta 的形式來做撰寫;如果是使用 2.x 的人,或許會需要做些調整(有也不多)。

而如果要使用 OpenCV 來顯示 K4W SDK v2 的深度影像的話,程式大致上可以寫成像下面這樣:

閱讀更多»

OpenCV 3.0 Beta 版發布

OpenCV(官網)的 3.0 版終於推出 beta 版了!官方的消息是《OpenCV 3.0 Beta》,雖然這個版本還不是正式版,但是在經過之前 alpha 版的測試後,穩定性已經提升不少,應該算是比較可以拿來用了。

目前 3.0 版的文件是在:http://docs.opencv.org/master/,而如果想要下載的話,則可以在官方下載頁面(連結)取得最新的 pre-build 的檔案,或是從 GitHub 上下載原始碼(連結)。

而 OpenCV 3.0 和 2.x 比起來,到底有哪些不同呢?首先,基本上 OpenCV 3 可以視為是 OpenCV 2 的改善,但是 3.0 和 2.x 並不完全相容,主要的變化包括了:

閱讀更多»

OpenCV GPU 簡單紀錄

OpenCV 實際上在 2011 年開始,就有一個「gpu」的模組,可以透過 NVIDIA CUDA 來使用顯示卡做 GPGPU 的計算了!目前官網上也有相關的文件了(連結)。

不過,現在 OpenCV 官網上,有提供已經建置好的 2.4.9 的程式可以下載,其中也包括了 Heresy 需要的 Windows 版;不過很遺憾的,官方所提供的預先建置好的版本,看來都沒有建置成支援 GPU 的版本…所以如果需要使用 OpenCV 的 GPU 功能的話,就需要自己下載原始碼來自己建置了。

而這篇,基本上就是 Heresy 自己試著用 Visual Studio 來建置 OpenCV 的 GPU 版本的紀錄。

閱讀更多»

在 OpenNI2 環境使用 Webcam 來讀取彩色影像:WebCam4OpenNI2

之前 Heresy 有寫了一篇《OpenNI 2 的 Driver 模組(概念)》,大概講了要怎麼去實作 OpenNI2 的驅動程式模組的概念;而這一篇的東西,就是實作的結果了!

基本上,Heresy 自己算是以半試驗的性質,搭配 OpenCV、寫了一個「WebCam4OpenNI2」的 OpenNI 2 驅動模式模組,讓 OpenNI 可以把系統上一般的 webcam(攝影機),當作一個 Device 來看,並可以建立一個用來讀取彩色影像的 VideoStream

雖然目前還有一些問題,功能也還不全,不過基本上算是堪用了,所以這邊算是第一個公開版本吧~檔案 Heresy 把它放在 GitHub 上,連結是:

https://github.com/KHeresy/WebCam4OpenNI2

閱讀更多»

讓 Visual C++ 2012 在偵錯的時候可以直接看到圖片的內容

一般在寫影像處理、或是多媒體的程式,如果要針對影像的內容作檢查的時候,通常都得把它畫出來、或是存成圖檔,其實相當地麻煩,不但要去改程式的內容,而且也不方便。

而現在,微軟有針對 VisualStudio 2012 推出了「Image Watch」這個外掛,可以讓 Visual Studio 在偵錯的時候,使用類似本來的監看變數的功能,針對設定好的型別、直接顯示他的影像內容、來做簡單的檢查了!

閱讀更多»

體感按鈕實作(OpenCV)

這篇,算是簡單的概念實作測試吧…Heresy 是試著在 OpenCV 的環境下,透過 NiTE 的手部追蹤的功能,來時做體感的按鈕。由於只是概念實作,所以在圖形的部分,算相當地簡單就是了~如果有需要的話,也可以自己根據需求作加強。

程式的原始碼在:https://1drv.ms/f/s!Al8B-ey4Dwfg70iulL28kh-idqK8

裡面的檔案,主要是定義了按鈕的類別的 NIButtons.h,以及主程式的 NIButtons.cpp 的部分。

Heresy 基本上實作了兩種不同的按鈕,一種是要按下的 PressButton,另一種則是要把手停在按鈕內一段時間的HoldButton;而為了架構上的一致性,這兩者都繼承自 AbsNIButton

閱讀更多»