Armadilloフォーラム

armadillo-x1にopencv3.4.0の導入

hei

2018年8月30日 13時43分

お世話になります。

現在、armadillo-x1にopencv-3.4.0を導入しようとしています。
全くの初心者なので様々なサイトを見ながら苦戦しています・・・。

目的:armadillo-x1にopencv-3.4.0を導入し、キャプチャする画像にCannyやHoughLine、ガウスフィルターなどをかけて動画にした際のフレームを見る。

経緯:opencv2.4.9を導入し、ガウスフィルターとCannyやHoughLineを行った際のフレーム数が3fps程しかなく、NEONのあるopencv3.4.0の導入に踏み出しました。

ボードの状態:opencv-3.4.0をcmakeにかけ、ビルドするとストレージが足りなくなるので/etcの中にSDcardというフォルダを作成し、そこに64GBの外部SDをマウントしています。基本このフォルダより上で作業を行います。
インストールしたパッケージはsamba ssh xrdp libjasper1 zipなどを入れています。
ボードの操作は開発セットについていたシリアル通信ケーブルを使用し、TeraTermでコマンドを打ち込んで操作しています。

導入までに踏んだ手順:※opencv-3.4.0とopencv_contribの圧縮ファイルは事前に取って/SDcard上に解凍してあります。

--作業場に移動&ビルド環境作成--
cd /etc/SDcard/opencv-3.4.0
mkdir build && cd build

--必要なパッケージのインストール(様々なサイトをはしごして必要と書いてあるパッケージを片っ端から入れようとしているコマンドの為、抜けやインストール不可・不要なものが多々あるかもしれません)--
sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools
sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev pkg-config libxvidcore-dev libx264-dev libatlas-base-dev gfortran

エラーが出たものは除外して行いました。(メモするのを忘れてどれか分からなくなりました・・・。)

--cmake--
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=../../../../usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON -D ENABLE_VFPV3=OFF -D ENABLE_NEON=ON -D WITH_QT=OFF -D WITH_GTK=ON -D WITH_LIBV4L=ON ..

--ビルド--
make -j2

--インストール--
sudo make install

--配置--
sudo ldconfig

--移動--
cd ../..   (SDcardに移動)

以上で導入を終え、添付しているプログラム(動画を出力するだけのプログラム)のmakeを行うと、
make
g++ -O3 -I/usr/local/include/opencv -I/usr/local/include/opencv2 -I/usr/local/include -L/usr/local/lib -lopencv_highgui -lopencv_core -lopencv_ml -lopencv_video -lopencv_imgproc -lopencv_calib3d -lopencv_objdetect -L/usr/local/lib -lm -lopencv_features2d -lopencv_objdetect test.cpp -o test
----------------------------------------------ここからエラー------------------------------------------
/usr/bin/ld: /tmp/cc0qqfkB.o: undefined reference to symbol '_ZN2cv12VideoCapture4readERKNS_12_OutputArrayE'
//usr/local/lib/libopencv_videoio.so.3.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
: recipe for target 'test' failed

というエラーが出ます。
同じようなエラーが出ている人がいらっしゃるようで、-lpthreadなどをmakefileに足してみたのですが解決されず、必要と書いてあるパッケージをインストールしてはopencv3.4.0の再導入を行ってみましたが、解決されず困っています。
解決策や確認事項などを教えていただけないでしょうか?

長文になりましたが、ご教授願います。

ファイル ファイルの説明
test.cpp 動作プログラム
Makefile.txt アップロードできなかったのでテキスト形式のmakefile
コメント

kojima

2018年8月30日 18時00分

> //usr/local/lib/libopencv_videoio.so.3.4: error adding symbols: DSO missing from command line
libopencv_videoioをリンクしてみてはどうでしょうか。
-----------------
-lopencv_videoio
-----------------

hei

2018年8月31日 10時21分

> > //usr/local/lib/libopencv_videoio.so.3.4: error adding symbols: DSO missing from command line
> libopencv_videoioをリンクしてみてはどうでしょうか。
> -----------------
> -lopencv_videoio
> -----------------
> ご回答ありがとうございます。
無事動作しました!makefileの問題だったのですね・・・。
ありがとうございました。