參考http://blog.csdn.net/wzmsltw/article/details/52718472
最近想對現在使用的跟蹤程序進行加速,發現自己安裝的opencv,沒有支持CUDA,查了資料才知道opencv安裝時很多選項要修改。
安裝對cuda支持的opencv,需要之前安裝好cuda,安裝完cuda同時也附帶了opencl的庫,可以安裝opencv對opencl的支持
首先安裝依賴庫
sudo apt-get update
sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils
sudo add-apt-repository ppa:jon-severinsson/ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg
sudo apt-get install frei0r-plugins
然後下載opencv的資源
mkdir OpenCV
cd OpenCV
git clone https://github.com/Itseez/opencv.git
此處最好修改一個地方,在
modules\imgproc\src\imgwarp.cpp
中,有一個opencv還未修改的小bug,當圖像過大時會報錯。打開這個文件,將兩處CV_Assert( ssize.area() > 0 );和一處CV_Assert( dsize.area() > 0 );註釋掉,再編譯就能暫時祛除錯誤。
cd opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D BUILD_TIFF=ON ..
注意在cmake界面中檢查CUDA和OpenCL等想要配置的是否爲YES
-- Use Cuda: YES (ver 8.0)
-- Use OpenCL: YES
--
-- NVIDIA CUDA
-- Use CUFFT: YES
-- Use CUBLAS: YES
-- USE NVCUVID: NO
-- NVIDIA GPU arch: 11 12 13 20 21 30 35
-- NVIDIA PTX archs: 30
-- Use fast math: YES
之後make and install
make
sudo make install
配置bashrc,保證找到opencv庫的位置
echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf.d/opencv.conf
sudo ldconfig
printf '# OpenCV\nPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig\nexport PKG_CONFIG_PATH\n' >> ~/.bashrc
source ~/.bashrc
這裏我拋出自己的一個問題
我安裝完ros之後,ros自帶的opencv也安裝上了,但是這個opencv沒有cuda和opencl等其他工具的部分
但是每次cmake包的時候,都是自動鏈接ros自帶的這個opencv,導致程序找不到opencv中的cuda等工具,使程序不通,我找了好久才找到問題,這時需要先cmake一遍之後,再用cmake-gui,將opencv的鏈接換到你自己安裝的opencv包的路徑,再configure,就能找到其他的鏈接.
這是一個本辦法,我想,肯定有更好的方法,求大神們指導,謝謝!