codeBlocksでofxOpenCvをアドオンに追加して使うときにリンクエラーでハマったのでメモ。
【環境】
OS : Win7
codeBlocks : 13.12
oF : v0.8.4
まずはWorkSpaceのプロジェクト名を右クリックして、「Build options」をクリック。
ウィンドウがあがるので、2番目のタブの「Linker settings」を選択。
ここに、addons/ofxOpenCv/libs/opencv/lib/win_cb フォルダ配下の共有ライブラリファイルを追加する。
ここでちょっとハマりました。
ただ、追加しただけでは参照の依存関係が解消されないので、以下の順でやる必要がある。
libopencv_objdetect231.a
libopencv_legacy231.a
libopencv_cablib3d231.a
libopencv_features2d231.a
libopencv_imgproc231.a
libopencv_core231.a
ちなみにヘッダはこんな感じで読みこんでます。エラーが出ない程度にざっくりやったので無駄に読みこんでいる可能性ありです。
実際に実行してみます。ソースは簡単なcolorImageをdrawするもの。
#pragma once #include "ofMain.h" #include "ofxOpenCv.h" class ofApp : public ofBaseApp{ public: void setup(); void update(); void draw(); void keyPressed(int key); void keyReleased(int key); void mouseMoved(int x, int y); void mouseDragged(int x, int y, int button); void mousePressed(int x, int y, int button); void mouseReleased(int x, int y, int button); void windowResized(int w, int h); void dragEvent(ofDragInfo dragInfo); void gotMessage(ofMessage msg); ofVideoGrabber cam; ofxCvColorImage colorImg; };
#include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup(){ cam.initGrabber(320, 240); colorImg.allocate(320, 240); } //-------------------------------------------------------------- void ofApp::update(){ cam.update(); colorImg.setFromPixels(cam.getPixels(), 320, 240); } //-------------------------------------------------------------- void ofApp::draw(){ colorImg.draw(0, 0, 320, 240); }