ページ 11

opencvをcygwinで使うには

Posted: 2012年10月05日(金) 19:01
by aa020
はじめまして質問させていただきます。

opencvをcygwinで使いたいと思っているのですが設定のしかたがわかりません。
opencvのバージョンは2.4.2をインストールしました。
cygwinはすべてインストールしてあります。

環境変数の設定はしました。

他サイトに書かれているコードを入力したのですがうまくいきませんでした。

はじめから設定のところを教えてもらえないでしょうか。

よろしくお願いします。

Re: opencvをcygwinで使うには

Posted: 2012年10月05日(金) 23:55
by トントン
aa020 さんが書きました:はじめまして質問させていただきます。

opencvをcygwinで使いたいと思っているのですが設定のしかたがわかりません。
opencvのバージョンは2.4.2をインストールしました。
cygwinはすべてインストールしてあります。

環境変数の設定はしました。

他サイトに書かれているコードを入力したのですがうまくいきませんでした。

はじめから設定のところを教えてもらえないでしょうか。

よろしくお願いします。
できなさそうだったら、こちらの環境でも試してみます。
(とはいえ、僕のPCではcygwin重いorz)

で、まず設定がおかしいと言っていますが
何故そう思ったのでしょうか?
また、どう上手くいかないのでしょうか?
(コンパイルが通らない? 起動はしたけど画面が映らない?)

わかる範囲で良いので、もう少し具体的にお願いします。

また、こちらのサイトは参考になりますか?
http://d.hatena.ne.jp/dumin/20060129/1138506776

Re: opencvをcygwinで使うには

Posted: 2012年10月06日(土) 01:00
by aa020
ご丁寧な回答ありがとうございます。

cygwinでサンプルプログラムをコンパイルしてもファイルが見つからないといったエラーが出ます。

cygwinはC:に入れています。
opencvはC:\Program Filesに入れています。

トントンさんの紹介してくれたサイトを拝見したのですが、
opencvのバージョンが違うために見つからないファイルがあります。
(パスを変えても見つからないファイルがあります。)

opencvをcygwinで使うためには設定のために特別なコマンドを入力する必要があるのかと思い質問しました。
それともopencvを入れいている場所がわるいのでしょうか。

よろしくお願いします。

Re: opencvをcygwinで使うには

Posted: 2012年10月06日(土) 03:25
by トントン
aa020 さんが書きました:ご丁寧な回答ありがとうございます。

cygwinでサンプルプログラムをコンパイルしてもファイルが見つからないといったエラーが出ます。

cygwinはC:に入れています。
opencvはC:\Program Filesに入れています。

トントンさんの紹介してくれたサイトを拝見したのですが、
opencvのバージョンが違うために見つからないファイルがあります。
(パスを変えても見つからないファイルがあります。)

opencvをcygwinで使うためには設定のために特別なコマンドを入力する必要があるのかと思い質問しました。
それともopencvを入れいている場所がわるいのでしょうか。

よろしくお願いします。
わかりました、こちらでも試してみますが
諸々の都合で試せるのが今日の夕方~明日あたりになると思います。

ただ、VS2010でopencvのバージョンが2.4.xが何故かこちらの環境では何故か上手く動きませんでした。
(バージョン2.2なら上手く動いた)
なので、もしかしたら旧バージョンの方法になるかもしれません。
最悪、旧バージョンでも大丈夫でしょうか?(旧バージョンなら紹介したサイト通りでもいけるのかな?)

Re: opencvをcygwinで使うには

Posted: 2012年10月06日(土) 07:37
by aa020
トントンさん

ご回答ありがとうございます。
旧バージョンになっても大丈夫です。

2.2というと、いくつかバージョンがあるみたいなのですがしたので考えて大丈夫でしょうか。
OpenCV-2.2.0-win.zip

よろしくお願いします。

Re: opencvをcygwinで使うには

Posted: 2012年10月06日(土) 14:30
by トントン
aa020 さんが書きました:トントンさん

ご回答ありがとうございます。
旧バージョンになっても大丈夫です。

2.2というと、いくつかバージョンがあるみたいなのですがしたので考えて大丈夫でしょうか。
OpenCV-2.2.0-win.zip

よろしくお願いします。
それで大丈夫だと思います。
すいませんが、先にそれで試してみてください。

Re: opencvをcygwinで使うには

Posted: 2012年10月07日(日) 08:21
by トントン
とりあえず、諸々実施してみました。
が、正直上手くいかずOpenCVのバージョン1.0でようやく実施できたレベルですorz

とりあえず、僕がやったことを下記に書きます。

・OpenCV2.42
DLしたlibとbinにパスを通して、実施してみましたが
「認識できない」と言われコンパイルで弾かれました。
どうやら、cygwin用のファイルがあるらしいです。
http://hvrl.ics.keio.ac.jp/kimura/opencv/index.html.ja
ちなみにこちらは試していません。
(↑自己責任でお願いしますね。)

・OpenCV2.2
こちらには、libとbinにファイルが入っていないので
cmakeを駆使して、ファイルを生成しないといけないみたいです。
ということで途中までやってみたんですが
cmake分からん! となって生成できず挫折しましたorz

・OpenCV1.0
古すぎるかな? バージョンアップ後どれだけ変わっているかわかりませんが。。。
(ファイル、フォルダ構成は2.0以降、変わっているようです。)
とりあえず、下記のサイトが参考になりました。

http://www.kis.osakafu-u.ac.jp/~aoki/cg ... B3%CA%D41)
(コンパイルは通りましたが、cygwinフルで入れてないので実行の確認はできていません。)

OpenCV1.0はインストーラーになっているので
特に設定は必要ない感じです。
また、調べているとcygwinで実施している人のほとんどがバージョン1.0前後(後2.0ぐらい?)でした。(日本語サイト)

という訳で、解決らしい解決にはなっていません。申し訳ないです。
参考程度にお願いします。

追記
聞き忘れていたことがりました。(というか最初に聞くべきだったのですが。)
以下、OpenCVの設定は正しく行われていたと仮定して

1.リンカの設定は正しく行われていますか?
2.「.a (.lib)」のファイルが正しい場所にあるとして、シンボリック名はあっていますか?
3.include先はあっていますか?

仮にOpenCVの設定が正しくてもコンパイルを実施するときに上記が間違っていると
ファイルが見つからないといったエラーが出ます。

Re: opencvをcygwinで使うには

Posted: 2012年10月07日(日) 22:44
by aa020
トントンさん

ご丁寧な回答ありがとうございます。

>
>1.リンカの設定は正しく行われていますか?
>2.「.lib」のファイルが正しい場所にあるとして、シンボリック名はあっていますか?
>3.include先はあっていますか?

リンカ設定というものがよくわかっておりません。
検索で調べても、適当なものが調べられなかったです。

現状、プログラムをコンパイルしようとしてもヘッダファイルが見つからないというエラーが出てきます。

他サイトを参考にしたシェルコマンドで下記を入力しました。
-------------------------
01 #!/usr/bin/bash
02
03 # OpenCVをインストールしたディレクトリにショートカットをつくる
04 # ここでOpenCVをインストールしたディレクトリをする
05 ln -s /cygdrive/c/Program\ Files/OpenCV OpenCV_DIR
06 # (1) nmコマンドを行うための前準備
07 # (2) dllから必要な情報を抽出する
08 # (3) dllからインポートライブラリを作成する
09 # (以下該当ファイルに対して同じ処理を行い.aファイルを生成する)
10
11 echo EXPORTS > cv.def
12 nm OpenCV_DIR/lib/cv.lib | grep ' T _' | sed 's/.* T _//' >> cv.def
13 dlltool --def cv.def --dllname cv100.dll --output-lib libcv.dll.a
14
15 echo EXPORTS > cvaux.def
16 nm OpenCV_DIR/lib/cvaux.lib | grep ' T _' | sed 's/.* T _//' >> cvaux.def
17 dlltool --def cvaux.def --dllname cvaux100.dll --output-lib libcvaux.dll.a
18
19 echo EXPORTS > cvcam.def
20 nm OpenCV_DIR/lib/cvcam.lib | grep ' T _' | sed 's/.* T _//' >> cvcam.def
21 dlltool --def cvcam.def --dllname cvcam100.dll --output-lib libcvcam.dll.a
22
23 echo EXPORTS > cxcore.def
24 nm OpenCV_DIR/lib/cxcore.lib | grep ' T _' | sed 's/.* T _//' >> cxcore.def
25 dlltool --def cxcore.def --dllname cxcore100.dll --output-lib libcxcore.dll.a
26
27 echo EXPORTS > highgui.def
28 nm OpenCV_DIR/lib/highgui.lib | grep ' T _' | sed 's/.* T _//' >> highgui.def
29 dlltool --def highgui.def --dllname highgui100.dll --output-lib libhighgui.dll.a
30
31 # 生成したライブラリを所定の場所に移動する
32 mv lib*.a /usr/local/lib
33
34 # バイナリファイルのコピー
35 cp OpenCV_DIR/bin/*.dll /usr/local/bin/
36
37 # ヘッダファイルをコピーするディレクトリの準備
38 mkdir /usr/local/include
39 mkdir /usr/local/include/opencv
40
41 # ヘッダファイルのコピー
42 cp OpenCV_DIR/cxcore/include/*.h /usr/local/include/opencv
43 cp OpenCV_DIR/cv/include/*.h /usr/local/include/opencv
44 cp OpenCV_DIR/cvaux/include/*.h /usr/local/include/opencv
45 cp OpenCV_DIR/cxcore/include/*.hpp /usr/local/include/opencv
46 cp OpenCV_DIR/cv/include/*.hpp /usr/local/include/opencv
47 cp OpenCV_DIR/cvaux/include/*.hpp /usr/local/include/opencv
48 cp OpenCV_DIR/otherlibs/highgui/*.h /usr/local/include/opencv
49 cp OpenCV_DIR/otherlibs/cvcam/include/*.h /usr/local/include/opencv
50
51 # 生成したファイル/リンクの削除
52 rm *.def
54 rm OpenCV_DIR
-----------------------------------
これではリンカ設定というものがされないのでしょうか。

よろしくお願いします。

Re: opencvをcygwinで使うには

Posted: 2012年10月07日(日) 23:56
by トントン
aa020 さんが書きました:トントンさん
リンカ設定というものがよくわかっておりません。
検索で調べても、適当なものが調べられなかったです。

現状、プログラムをコンパイルしようとしてもヘッダファイルが見つからないというエラーが出てきます。

他サイトを参考にしたシェルコマンドで下記を入力しました。
-------------------------
~略~
これではリンカ設定というものがされないのでしょうか。

よろしくお願いします。
まず、予備知識としてリンカについて(ご存知でしたらスルーで)
http://www.seto.nanzan-u.ac.jp/~hachisu ... 01S04.html

コンパイラはgccでよろしいでしょうか?
gccの場合、リンク先とインクルード先、リンクするファイルを
自分で指定して渡さないといけません。

上のサイトでもコンパイルを実施するとき指定していますね。

コード:

% gcc sample1.c -I "c:/Program Files/OpenCV/cv/include" \
  -I "c:/Program Files/OpenCV/cxcore/include" \
  -I "c:/Program Files/OpenCV/otherlibs/highgui" \
  -L "c:/Program Files/OpenCV/libs" \
  -L "c:/Program Files/OpenCV/cxcore/lib" \
  -lcv -lcxcore -lhighgui -o sample1
-I(大文字アイ)で、ヘッダファイルのあるディレクトリを指定
-Lでリンクディレクトリ(アーカイブ、ライブラリのあるディレクトリ)を指定。
-l(小文字エル)でリンクするアーカイブ、ライブラリを指定

http://kazmax.zpp.jp/cmd/g/gcc.1.html
※より詳細な内容が知りたければ調べてみてください。

という訳で、スクリプトでコピーした
ファイル先を指定すればできると思います。

Re: opencvをcygwinで使うには

Posted: 2012年10月09日(火) 11:41
by aa020
トントンさん

ありがとうございます!

トントンさんのおかげでつかえるようになりました!
一人で四苦八苦していたため、本当に助かりました。