本來打算在Ubuntu 12.04上安裝opencv 3.0的,結果發生了下面(2)中的錯誤,不知如何解決,所以最後還是老老實實安裝opencv 2.4.
(1)編譯時出現錯誤:
In file included from /home/vonzhou/Downloads/opencv-3.0.0-rc1/modules/videoio/src/cap_ffmpeg_impl.hpp:65:0,
from /home/vonzhou/Downloads/opencv-3.0.0-rc1/modules/videoio/src/cap_ffmpeg.cpp:45:
/home/vonzhou/Downloads/opencv-3.0.0-rc1/modules/videoio/src/ffmpeg_codecs.hpp:171:7: error:‘AV_CODEC_ID_H263I’ was not declared in this scope
/home/vonzhou/Downloads/opencv-3.0.0-rc1/modules/videoio/src/ffmpeg_codecs.hpp:287:7: error: ‘AV_CODEC_ID_WNV1’ was not declared in this scope
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] Error 1
解決:問題在於ffmpeg,手動下載並安裝(參考這裏)
./configure --enable-shared --disable-static
make
sudo make install
然後重新make我們的opencv。
(2)錯誤:
libopencv_videoio.so.3.0.0:undefined reference to "avcodec_free_frame"
libopencv_videoio.so.3.0.0: undefined reference to `avcodec_encode_video2'
安裝OpenCV 2.4.10過程:
(1)安裝必要的軟件;
(2)下載opencv並解壓;
(3)make,靜靜等待;
出現錯誤:
/home/vonzhou/Downloads/opencv-2.4.10/modules/core/src/system.cpp: In function ‘(static initializers for /home/vonzhou/Downloads/opencv-2.4.10/modules/core/src/system.cpp)’:
/home/vonzhou/Downloads/opencv-2.4.10/modules/core/src/system.cpp:280:10: error: inconsistent operand constraints in an ‘asm’
[ 22%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/opengl_interop_deprecated.cpp.o
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/system.cpp.o] Error 1
解決:這是一個和編譯器有關的問題,升級gcc還是沒解決,可以替換掉system.cpp文件(具體看這裏)。
(4)sudo make install
(5)配置:sudo vi /etc/ld.so.conf.d/opencv.conf,加入內容:
/usr/local/lib
而後:sudo ldconfig
(6)這樣就安裝成功了,重啓後,用自帶的樣例代碼測試下:
cd Downloads/opencv-2.4.10/samples/c
./build_all.sh
然後運行人臉測試程序 : ./facedetect
運行結果:會把你的臉給識別處理 ,:)
參考: