centos7下opencv3的安裝
前面說過opencv和python模塊的安裝,版本是基於opencv 2的,這篇主要說一下opencv3的安裝過程以及相關依賴問題的解決,同樣opencv3的安裝包在官網上可以下載,最新穩定版是3.3.0,下載之後安裝包為:opencv-3.3.0.zip;opencv3的安裝包比2大了2倍以上,改動很大,支持的擴展也很多,具體官網上列出如下:
這些依賴部分簡單說明如下:
1). gcc一般系統都會有
2). cmake要手動安裝並且版本要大於2.8.12,安裝過程之前也寫過
3). git這個不是必須的,根據需要安裝
4). GTK不需要也可以不裝,需要的話去官網下載包編譯即可
5). pkg-config一般系統自帶
6). python默認用系統的2.7最好提前安裝一下numpy,具體過程前面安裝opencv2都說過
7). ffmpeg依賴,opencv視頻處理部分是基於ffmpeg的,所以如果想用opencv3來處理視頻那麽必須安裝ffmpeg依賴,並且不能下載官網上最新的ffmpeg,opencv調用的是比較老的系統版本,待會會說明怎麽使用yum安裝
8). 其他依賴 比如libjpeg或者libpng等,這些盡量都要安裝上,用默認的yum源就可以
9). CUDA GPU支持,如果有GPU並且驅動和CUDA Toolkit都已經正確安裝,那麽opencv會自動支持
下面開始安裝,解壓安裝包並進入:
unzip opencv-3.3.0.zip cd opencv-3.3.0/ mkdir build
這裏為了不汙染源碼環境,要求必須在新目錄中編譯,現在如果直接開始編譯那麽中間會下載ippicv_2017u2_lnx_intel64_20170418.tgz並且非常慢,這個如果需要可以提前下載好,如果不需要可以屏蔽,下載地址是:http://www.linuxfromscratch.org/blfs/view/svn/general/opencv.html 進入下載即可,配置方法如下:
首先編輯ippicv.cmake文件 vim 3rdparty/ippicv/ippicv.cmake
配置成上面這個前提本機要啟動一個服務器,比如apache,nginx或者python自帶的都行,python自帶的啟動要在上面那個tgz所在的同一目錄啟動,啟動命令是: python -m SimpleHTTPServer 80 另外apache或者nginx的web目錄中也要放入上面下載的文件才可以,具體目錄都可以自己定義的,只要能下載到就可以,另外如果不用就更簡單了,隨便修改一下原來的下載域名下載不到即可,修改完之後保存並退出,這時候編譯時下載就很快了
然後如果需要ffmpeg支持,那麽需要安裝相關的庫,安裝過程如下:
# 安裝epel擴展源 yum -y install epel-release # 添加擴展源 yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm # 安裝ffmpeg依賴 yum -y install ffmpeg ffmpeg-devel
現在ffmpeg依賴就安裝好了,如果沒有網絡的話,建議現在一臺有網的計算機上安裝收集到具體的rpm包,然後再復制過去安裝即可,當然如果不使用opencv的視頻處理庫,而是直接使用ffmpeg解碼,那麽上面步驟就完全不需要了
現在ippicv和ffmpeg都準備好了,那麽可以開始安裝opencv3了
執行cmake配置:
cd build/
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..
上面如果CMAKE_INSTALL_PREFIX安裝目錄不指定,默認是安裝到/usr/local下和系統放一塊,完成之後可以查看支持的相關擴展,沒問題執行編譯並安裝:
make -j4 make install
執行完就安裝成功了,關於python的支持配置和之前完全一樣,復制cv2.so模塊到python庫目錄下即可;另外ffmpeg支持測試如下:
首先進入解壓好的源碼目錄,不是安裝目錄,然後再執行 cd samples/cpp/example_cmake/ 進入示例目錄,會看到裏面有一個example.cpp文件,在原來基礎上修改如下:
1 #include "opencv2/core.hpp" 2 #include "opencv2/imgproc.hpp" 3 #include "opencv2/highgui.hpp" 4 #include "opencv2/videoio.hpp" 5 #include <iostream> 6 7 using namespace cv; 8 using namespace std; 9 10 int main() 11 { 12 cout << "Built with OpenCV " << CV_VERSION << endl; 13 Mat image; 14 VideoCapture capture("/root/test.mp4"); 15 if(capture.isOpened()) 16 { 17 cout << "Capture is opened" << endl; 18 for(int i = 0;i < 10;i++) 19 { 20 capture >> image; 21 if(image.empty()) 22 break; 23 char image_name[6]; 24 sprintf(image_name, "%d.jpg", i); 25 imwrite(image_name, image); 26 } 27 } 28 else 29 { 30 cout << "No capture" << endl; 31 } 32 return 0; 33 }
上面的代碼很簡單就是從視頻中解出來10幀圖片,視頻文件自己找一個測試即可,編輯完成之後執行下面命令編譯:
cmake . make
如果執行編譯沒什麽問題,那麽現在應該生成了一個opencv_example的可執行程序,然後 ./opencv_example 執行即可,正常應該可以生成0.jpg~9.jpg這10張圖片
到這裏opencv3環境就安裝好了
centos7下opencv3的安裝