1. 程式人生 > >opencv3.2安裝成功,但使用VideoCapture時出現連結錯誤

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

release

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