opencv3.2安裝成功,但使用VideoCapture時出現連結錯誤
opencv3.2 已經在Ubuntu14.04安裝成功了;
使用VideoCapture時出現連結出錯
//usr/local/lib/libopencv_videoio.so: undefined reference to `[email protected]_54'
去/usr/local/lib下搜尋,ffmpeg安裝的時58版本,和54 不對;
由於我是先安裝的opencv3.2,後安裝的ffmpeg4可能導致opencv沒檢出出來使用預設54版本號;重灌opencv
Unzip opencv-3.2.0.zip
Cd opencv-3.2.0
mkdir release
cd
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/cui/arcsoft/opencv/install/opencv_contrib-3.2.0/modules ../
如果遇到這樣的錯誤:-- ICV: Downloading ippicv_linux_20151201.tgz... CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file): file DOWNLOAD HASH mismatch
安裝OpenCv 3.2的過程中要下載ippicv_linux_20151201,由於網路的原因,這個檔案經常會下載失敗。
解決的辦法是手動下載:
下載ippicv_linux_20151201.tgz 並貼上(替換)到目錄opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/
重新cmake
make編譯
在配置時,可以看到opencv已經檢測出了版本號時58;
但編譯時有出錯 error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
opencv-3.2.0/modules/videoio/src/cap_ffmpeg_impl.hpp 裡最頂端添加了:
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020
編譯通過;
sudo make install