最初に確認するのは、OpenCVのインストールページ
真っ新のRaspiにインストールする。
これは僕のやり方なのでディレクトリーは読み替えて下さい。
homeディレクトリーが散らかるのが嫌なので
~/prj/cv4を作りそこで作業をしている。
swapファイルは拡張する。
sudo vi /etc/dphys-swapfile
CONF_SWAPSAIZE=100 -> 1024
sudo /etc/init.d/dphys-swapfile restart
swapon 確認
RaspberryPi 4B Buster
この組合せはまだ安定していないのかなぁ。
apt installでもエラーが発生する場合もあるし、build途中でもエラーが発生
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_compare_exchange_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_fetch_sub_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_load_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_store_8'
/usr/bin/ld: ../../lib/libopencv_core.so.4.1.1: undefined reference to `__atomic_fetch_add_8'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/version/CMakeFiles/opencv_version.dir/build.make:85: bin/opencv_version] エラー 1
make[1]: *** [CMakeFiles/Makefile2:12504: apps/version/CMakeFiles/opencv_version.dir/all] エラー 2
cmakeの赤字分が追加の回避設定
cd
time sudo apt install -y \
build-essential cmake pkg-config libcurl4-openssl-dev intltool devscripts debhelper ant \
libldap2-dev libgtkmm-3.0-dev libarchive-dev \
libjpeg-dev libtiff5-dev libpng-dev libjpeg-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev \
libgtk2.0-dev libgtk-3-dev \
libcanberra-gtk* \
gfortran python2.7-dev python3-dev \
libavresample-dev libtesseract-dev libleptonica-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libhdf5-dev \
libblas-dev libeigen{2,3}-dev libatlas-base-dev liblapacke-dev \
python3-numpy python-numpy libjasper-dev
python2関連のライブラリーを削除した
time sudo apt install -y \
build-essential cmake pkg-config libcurl4-openssl-dev intltool devscripts debhelper ant \
libldap2-dev libgtkmm-3.0-dev libarchive-dev \
libjpeg-dev libtiff5-dev libpng-dev libjpeg-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev \
libgtk-3-dev \
libcanberra-gtk* \
gfortran python3-dev \
libavresample-dev libtesseract-dev libleptonica-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libhdf5-dev \
libblas-dev libeigen3-dev libatlas-base-dev liblapacke-dev \
python3-numpy libjasper-dev
大体、7~8分。3B+は早い (^^)
raspi4 だと2分
mkdir prj/cv4
cd prj/cv4
wget https://github.com/opencv/opencv/archive/4.1.2.zip -O opencv-4.1.2.zip; wget https://github.com/opencv/opencv_contrib/archive/4.1.2.zip -O opencv_contrib-4.1.2.zip; unzip opencv-4.1.2.zip; unzip opencv_contrib-4.1.2.zip; cd opencv-4.1.2; mkdir build; cd build
cmake-guiを使って環境を作るのがおすすめ。
例えば下記の CPU_BASELINE=NEONは
ENABLE_NEON=ONとENABLE_VFPV3=ONと同時に設定するとエラーになる。
ITT、EIGEN、ITT等はチェックを外す。EIGENは使わない。
PYTHON2もサポートが2020年までなので、PYTHON3に移行する為にチェックを外す。
下の赤字は付け加える。
それくらいかなぁ、、、
//---------------------------------------------
// Raspi 4 Buster
//---------------------------------------------
cmake-guiを使うときは下記の設定をする。
特に、赤字をAdd Entryする。python2,EIGENの項目を消す。
CPU_BASE_LINE系は削除して、NEON、VFPV3はENABLEで設定
でも、この関係良く分からない。cmakeでエラーの出ない設定。
以下をコピペするのではなく、cmake設定するのが良い
下も動くけど、、、
time cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_EXAMPLES=ON \
-D BUILD_TESTS=OFF \
-D BUILD_SHARED=OFF \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D CMAKE_CXX_FLAGS=-latomic \
-D CPU_BASELINE=NEON \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D ENABLE_LTO=OFF \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.7/dist-packages \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/modules \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_TBB=OFF \
-D WITH_OPENCL=OFF \
-D WITH_GSTREAMER=ON ..
time make -j4
real 67m43.556s
user 252m19.934s
sys 17m26.788s
build/binにbuild されたサンプル、contribが入っている
python3でimport cv2 エラーがでる
対策はここ
-DCMAKE_CXX_FLAGS=-latomic → build 確認済み 9/1
-DOPENCV_EXTRA_EXE_LINKER_FLAGS=-latomi
vmware上でbuild する時は、青字の部分削除してcmake する
//---------------------------------------------
// Raspi 3B+ Strech
//---------------------------------------------
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/prj/cv4/opencv_contrib-4.1.1/modules \
-D ENABLE_VFPV3=ON \
-D ENABLE_NEON=ON \
-D BUILD_TESTS=OFF \
-D WITH_TBB=OFF \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_SKIP_PYTHON_LOADER=ON \
-D OPENCV_PYTHON2_INSTALL_PATH=/usr/local/lib/python2.7/dist-packages \
-D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.5/dist-packages \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
time make -j4
基本同じcmake設定
raspi4で、、、
real 104m18.468s
user 185m40.628s
sys 13m25.275s
raspi3B+
real 154m58.275s
user 550m24.650s
sys 16m18.052s
real:実行時間
user:CPU
sys:OSが処理をした時間
4coreの合計値がuser?
sudo make install
sudo ldconfig
cd ../samples/cpp
g++ `pkg-config opencv4 --cflags --libs` facedetect.cpp -o facedetect -std=c++11 -latomic
./facedetect --cascade="../../data/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 ../data/lena.jpg
お久しぶりです Lenaさん
.
ところで、g++でエラーが発生した。
一度うまくできたのに、ある時からエラー
それで、exampleのコードを参考に、facedetect,cpp 先頭の
includeのコメントアウトを外して、g++したら成功
なんで、できなくなったのだろう?
.
ところで、g++でエラーが発生した。
一度うまくできたのに、ある時からエラー
それで、exampleのコードを参考に、facedetect,cpp 先頭の
includeのコメントアウトを外して、g++したら成功
なんで、できなくなったのだろう?
0 件のコメント:
コメントを投稿