概要
以下を見ながらイントールしました。
OpenCV: Installation in Linux
インストール
設定
opencvのディレクトリを作成して、掲載されている順にインストールします。
wget -O opencv.zip https://github.com/opencv/opencv/archive/master.zip
unzip opencv.zip
# Create build directory
mkdir -p build && cd build
# Configure
cmake ../opencv-master
# Build
cmake --build .
以下のメッセージが出力され、設定が出来ます。
~ 省略 ~
-- OpenCV modules:
-- To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo stitching ts video videoio
-- Disabled: world
-- Disabled by dependency: -
-- Unavailable: java python2 python3
-- Applications: tests perf_tests apps
-- Documentation: NO
-- Non-free algorithms: NO
--
-- GUI:
-- GTK+: NO
-- VTK support: NO
--
-- Media I/O:
-- ZLib: /usr/lib/libz.so (ver 1.2.11)
-- JPEG: /usr/local/lib/libjpeg.so (ver 80)
-- WEBP: /usr/local/lib/libwebp.so (ver encoder: 0x020f)
-- PNG: /usr/local/lib/libpng.so (ver 1.6.37)
-- TIFF: /usr/local/lib/libtiff.so (ver 42 / 4.1.0)
-- JPEG 2000: OpenJPEG (ver 2.3.1)
-- OpenEXR: build (ver 2.3.0)
-- HDR: YES
-- SUNRASTER: YES
-- PXM: YES
-- PFM: YES
--
-- Video I/O:
-- DC1394: NO
-- FFMPEG: NO
-- avcodec: NO
-- avformat: NO
-- avutil: NO
-- swscale: NO
-- avresample: NO
-- GStreamer: NO
-- v4l/v4l2: NO
--
-- Parallel framework: pthreads
~ 省略 ~
コンパイル
make
コンパイルすると、さっそく、エラーが出力されます。
リンクの際、memalignという関数が無いようです。memalignは古い関数で、使用されなくなっていました。
[ 26%] Built target IlmImf
[ 28%] Built target opencv_imgcodecs
[ 29%] Built target opencv_videoio
[ 29%] Built target opencv_highgui
[ 30%] Built target opencv_ts
[ 30%] Linking CXX executable ../../bin/opencv_perf_core
../../lib/libopencv_imgproc.so.4.5.2: undefined reference to `memalign'
c++: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1
コンパイル時にWarnigが出でいたので、ソースをエディターで修正します。
emacs /home/opencv/src/build/3rdparty/ippicv/ippicv_lnx/iw/src/iw_own.c
以下のように、<stdlib.h>を追加し、posix_memalignを呼び出すように変更し、再度、コンパイルします。コンパイルには、しばらく時間がかかります。
/* ファイルの先頭あたり */
#include <stdlib.h>
/* 84行目あたり */
#else
void *ptr;
posix_memalign(&ptr, iAlign, iSize);
return ptr;
//return memalign(iAlign, iSize);
#endif
無事、コンパイルが終了しました。
[ 99%] Linking CXX executable ../../bin/opencv_visualisation
[ 99%] Built target opencv_visualisation
[ 99%] Linking CXX executable ../../bin/opencv_interactive-calibration
[100%] Built target opencv_interactive-calibration
[100%] Linking CXX executable ../../bin/opencv_version
[100%] Built target opencv_version
make intallでインストールされるのですが、デフォルトでは、以下の場所にインストールされてしまいます。
By default OpenCV will be installed to the /usr/local directory, all files will be copied to following locations:
/usr/local/bin - executable files
/usr/local/lib - libraries (.so)
/usr/local/cmake/opencv4 - cmake package
/usr/local/include/opencv4 - headers
/usr/local/share/opencv4 - other files (e.g. trained cascades in XML format)
さくらのレンタルサーバーでは、ローカルのディレクトリ(/home/userName/local)にインストールします。cmakeで以下のコマンドを実行します。
プログラムが /home/userName/local にインストールされます。
cmake -DCMAKE_INSTALL_PREFIX=/home/userName/local ../opencv-master/
make install