由wouter 編譯的OpenCV SWC 庫, 能透過讀取Cascade XML檔案辨認不同物件
現在為大家介紹如何在MAC OS X 中, 透過Adobe Alchemy (安裝參考) 編譯原生OpenCV:
- 我們到bonext 下載已整理的OpenCV 包. (OpenCV2.2.0 版本)
- 把bonext 解壓並存於/Library/bonext/ 路徑上.
- 在Terminal 中, 分別進入以下五個路徑:
cd /Library/bonext/src/opencv/calib3d/
cd /Library/bonext/src/opencv/contrib/
cd /Library/bonext/src/opencv/core/
cd /Library/bonext/src/opencv/imgproc/
cd /Library/bonext/src/opencv/objdetect/
並在每個路徑請輸入以下指命進行編譯:
repo_root=/Library/bonext/;
alc-on; rm -rdf log ; rm -f *.o; mkdir log ; for src in *.cpp ; do g++ -I$repo_root/include -DOSX -c -Wall -O3 -o ${PWD##*/}_`basename $src .cpp`.o $src 2> `basename $src .cpp`.log ; done ; mv -v *.log ./log ; alc-off; for f in ./log/*.log ; do grep 'error' $f ; done | cat | sort -u > ./log/errors.log ; less ./log/errors.log - 若編譯正確, 會在每一個路徑找到多個.o 檔案. 把它們移至/Library/bonext/flash/ 路徑上.
- 根據bonext 者作提示, 我們需要刪除core_system.o 檔案.
- 最後, 在/Library/bonext/flash/ 路徑, 輸入以下指命編譯成.swc 檔案:
rm *achacks* *.swc ; alc-on; g++ -swc -Wall -O3 -DOSX -I../include -o camlib.swc *.o camlib.cpp ; alc-off;
我們透過Adobe Alchermy 成功產生swc 元件, 在Flash Builder 設定swc 路徑後, 便可以使用:
package { import flash.display.Sprite; import cmodule.camlib.CLibInit; public class Bonext_WebCam extends Sprite { private var lib:Object; ... public function setupCLib():void { ... // <----- create a library instance from swc var loader:CLibInit = new CLibInit; lib = loader.init(); ... } ... public function enterFrameHandler(event:Event):void { ... // <----- call a method from swc var outPixels:ByteArray = lib.setFramePtr(pixels,pixels.length); ... } ... } }
在bonext 的作者純粹示範呼叫OpenCV 使影像變成灰色. 當然我們可以修改camlib.cpp 檔案, 加入相對的函數給Action Script 調用, 發揮OpenCV 的強大功能. 大家可以 [下載] 範例試試看.
沒有留言:
張貼留言