スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ゆーすけべーmiyagawanizeをWindows/Cygwinで動かしたいが

Image::ObjectDetectをcpanmにてインストールすべくopencvのcygwin版を慶応大のサーバーから取得、bunzip2.exeコマンドで、それを解凍。tar -xvf で展開。

http://hvrl.ics.keio.ac.jp/kimura/opencv/


パッケージ情報のファイルopencv.pcを解凍先に合わせるように編集した。


prefix=/opt/opencv2.4.2
exec_prefix=${prefix}
libdir=/opt/opencv2.4.2/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include



パッケージ情報のファイルがあるディレクトリを環境変数PKG_CONFIG_PATHに指定した。(.bashrcに追記。)

export PKG_CONFIG_PATH=/opt/opencv2.4.2/lib/pkgconfig




環境変数のexport

. ~/.bashrc



そして、Image::ObjectDetectのインストール

cpanm Image::ObjectDetect



しかし、のインストールで失敗。コンパイルはされてるがリンクでライブラリが見つからないというエラー。


g++-4 --shared -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--stack,8388608 -Wl,--enable-auto-image-base -L/usr/local/lib -fstack-protector ObjectDetect.o -o blib/arch/auto/Image/ObjectDetect/ObjectDetect.dll \
/usr/lib/perl5/5.10/i686-cygwin/CORE/cygperl5_10.dll \

ObjectDetect.o:ObjectDetect.c:(.text+0xc2): undefined reference to `_cvReleaseHaarClassifierCascade'
ObjectDetect.o:ObjectDetect.c:(.text+0x299): undefined reference to `_cvLoadImage'
ObjectDetect.o:ObjectDetect.c:(.text+0x2c6): undefined reference to `_cvCreateImage'
ObjectDetect.o:ObjectDetect.c:(.text+0x2e0): undefined reference to `_cvCvtColor'
ObjectDetect.o:ObjectDetect.c:(.text+0x2ef): undefined reference to `_cvEqualizeHist'
ObjectDetect.o:ObjectDetect.c:(.text+0x2fb): undefined reference to `_cvCreateMemStorage'
ObjectDetect.o:ObjectDetect.c:(.text+0x360): undefined reference to `_cvHaarDetectObjects'
ObjectDetect.o:ObjectDetect.c:(.text+0x3bb): undefined reference to `_cvGetSeqElem'
ObjectDetect.o:ObjectDetect.c:(.text+0x65f): undefined reference to `_cvReleaseMemStorage'
ObjectDetect.o:ObjectDetect.c:(.text+0x66a): undefined reference to `_cvReleaseImage'
ObjectDetect.o:ObjectDetect.c:(.text+0x675): undefined reference to `_cvReleaseImage'
ObjectDetect.o:ObjectDetect.c:(.text+0x986): undefined reference to `_cvLoad'
collect2: ld はステータス 1 で終了しました
Makefile:472: recipe for target `blib/arch/auto/Image/ObjectDetect/ObjectDetect.dll' failed
make: *** [blib/arch/auto/Image/ObjectDetect/ObjectDetect.dll] Error 1
-> FAIL Installing Image::ObjectDetect failed. See /home/tetsuya/.cpanm/build.log for details.



確かにリンクのオプションでopencvのライブラリが渡ってないような気がするが解決方法がわからないが。・・
opencv.pcを更に編集。以下のように。

exec_prefix=${prefix}
libdir=${prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.4.2
Libs: -L${libdir} -lopencv_calib3d.dll -lopencv_nonfree.dll -lopencv_contrib.dll -lopencv_objdetect.dll -lopencv_core.dll -lopencv_photo.dll -lopencv_features2d.dll -lopencv_stitching.dll -lopencv_flann.dll -lopencv_ts.dll -lopencv_gpu.dll -lopencv_video.dll -lopencv_highgui.dll -lopencv_videostab.dll -lopencv_imgproc.dll -lopencv_legacy.dll -lopencv_ml.dll
Cflags: -I${includedir_old} -I${includedir_new}



PATH環境変数にDLLの於いてあるbinパスへ通す。
以上の結果、なんとか少し前進している模様。
インストールまでは通るようになりました!!
いぇーい

$ cpanm Image::ObjectDetect
--> Working on Image::ObjectDetect
Fetching http://www.cpan.org/authors/id/J/JI/JIRO/Image-ObjectDetect-0.12.tar.gz ... OK
Configuring Image-ObjectDetect-0.12 ... OK
Building and testing Image-ObjectDetect-0.12 ... OK
Successfully installed Image-ObjectDetect-0.12
1 distribution installed



もう少しでmiyagawanizeができるかも・・・・
がんばります。。


perl -MImager -e 'print join ", ", sort keys %Imager::formats'
bmp, gif, ifs, jpeg, png, pnm, raw, t1, tga, tiff, w32





$ perl miyagawanize.pl kao.jpg
Can't load the image file at /usr/lib/perl5/site_perl/5.10/i686-cygwin/Image/ObjectDetect.pm line 23.

$ perl miyagawanize.pl kao.png



むむっ。jpgはできなかったが、pngだとできた!!!!
やったーーー。
でも、jpegサポートしてるんじゃないのか???


さてと、libjpegをいれてみるかって
apt-cyg のインストールを
http://kkaneko.com/rinkou/cygwin/cygwin.html
をみながら。。

まずはここからソースをダウンロードしてっと
http://apt-cyg.googlecode.com/svn/trunk/

/binディレクトリにおいて、chmod +x

$ apt-cyg install libjpeg-devel



Imagerの再インストール

$ cpanm -f Imager
cpanm -f Image::ObjectDetect



JPEGで再トライ・・・・


$ perl miyagawanize.pl kao.jpg
Can't load the image file at /usr/lib/perl5/site_perl/5.10/i686-cygwin/Image/ObjectDetect.pm line 23.



やっぱり、jpgの読み込みができなーい。。。。
もう少しなのに。。。。
デバッガー起動で、落ちてる箇所を絞り込み

でもさぁ。jpegを出力することはできるのに、なんで読み込むことが
できないんだろう。・・・
pngから出力したjpegを入力してもだめだし。



main::(miyagawanize.pl:11): my @faces = $detector->detect($file);
DB<1> n
Can't load the image file at /usr/lib/perl5/site_perl/5.10/i686-cygwin/Image/ObjectDetect.pm line 23.
at /usr/lib/perl5/site_perl/5.10/i686-cygwin/Image/ObjectDetect.pm line 23.
Image::ObjectDetect::detect('Image::ObjectDetect=SCALAR(0x2064d350)', 'kao.jpg') called at miyagawanize.pl line 11
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.



Image::ObjectDetectのCのソースだと以下でエラーになっている。
つまりCygwin-OpenCVのcvLoadImageでjpegが読めないっていうこと。
なんでだろう。

img = cvLoadImage(filename, 1);
if (!img)
croak("Can't load the image file");



ここで、ギブアップ!!

OpenCV2.3.1で再度挑戦しよう。次回に続く。
スポンサーサイト

コメントの投稿

非公開コメント

バグ修正いたしました

こちらのblogをたまたま拝見いたしましたが,cygwinでopencvをビルドしている者です.大変失礼いたしました.jpegの読み込みに失敗するのは(過去のバージョンで直したことのある)既知のバグなのですが,すっかり忘れていました.修正版を出しましたので,是非お試しくださいませ.

ありがとうございます。

どうもありがとうございます。
ちょうどOSをクリーンインストールした後なので
いいタイミングです。
ためしてみまーすww

プロフィール

鈍足ランナー

Author:鈍足ランナー
作成アプリ

Learn from AlphaGeeks
Twinani


最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。