1. 程式人生 > >在linux下編譯python3-opencv

在linux下編譯python3-opencv

    關於linux下編譯Opencv已經有許許多多的相關文章,包括一些需要依賴的庫,在此不再贅述,本文主要的目的是為了解決在python2 與 python3同時存在時,如何僅編譯python3-opencv的方法.

    需要使用到的工具鏈請讀者們自行配置,本人在編譯時使用的是fedora24 + python 3.5.1 + opencv3.1.

    由於在linux下安裝gtk-devel時會引入python2的安裝,導致在使用cmake時會檢測到兩個python版本,而cmake會傾向於使用低版本的python,也就是會選擇python2,這時我們需要加入引數來修改這個傾向.

<span style="font-family:SimSun;">cmake -D CMAKE_BUILD_TYPE=RELEASE  \
	-D INSTALL_C_EXAMPLES=OFF \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D BUILD_EXAMPLES=OFF \
	-D BUILD_opencv_python3=ON  \
	-D BUILD_opencv_python2=OFF  \
	-D BUILD_opencv_java=OFF  \
	-D PYTHON_EXECUTABLE=$(which python3)  \
	-D OPENCV_EXTRA_MODULES_PATH=<your extra modules path>  ..</span>

    這裡我們關閉編譯python2-opencv,因為我們沒有安裝python2相關的編譯依賴庫,如果嘗試編譯會造成錯誤,況且我們也不是為了編譯python2的版本,所以乾脆關掉. 

 配置完後,我們直接執行

 #  make –j8 

 大約30分鐘左右能完成opencv3.1的編譯,效果如下:

 

 這裡生成的cv2.cpython-35m-x86_64-linux-gnu.so就是我們編譯成功的opencv模組了.現在我們就可以在python3中使用opencv3.1了.

 

    這裡附帶提一下,如果要編譯視訊處理模組,需要自行編譯ffmpeg,本人在編譯的時候使用的是 2.6.9的版本,由於高版本存在函式移除導致opencv編譯失敗,所以還是老實點用低版本,具體編譯可自行百度,或翻牆谷歌.

    如果自行編譯ffmpeg,那麼在編譯opencv時還會遇到靜態庫在連結中產生的無法重定位的錯誤.可以這樣解決.

    在編譯ffmpeg前使用此種引數

    #  ./configure --enable-shared --disable-static        

   #  make –j8 && make install

   我們使用共享庫來完成opencv的編譯,這時需要修改opencv原始碼目錄下有個叫OpenCVFindLibsVideo.cmake的檔案.

# sed -i -e's/libavformat\.a/libavformat.so/g' \

      -e 's/libavutil\.a/libavutil.so/g' \

      -e 's/libswscale\.a/libswscale.so/g' \

      -e's/libavresample\.a/libavresample.so/g' \

      -e 's/libavcodec\.a/libavcodec.so/g' \

              OpenCVFindLibsVideo.cmake


 這條命令是用於替換cmake中的文字,將對(*.a)的依賴改為對(*.so)的依賴,也就是使用動態庫完成連結.

 這樣編譯就不會出現不能重定位的錯誤.

 opencv 與cmake的安裝過程可以參考文章: http://docs.opencv.org/3.1.0/dd/dd5/tutorial_py_setup_in_fedora.html#gsc.tab=0

相關推薦

linux編譯python3-opencv

    關於linux下編譯Opencv已經有許許多多的相關文章,包括一些需要依賴的庫,在此不再贅述,本文主要的目的是為了解決在python2 與 python3同時存在時,如何僅編譯python3-

在 CentOS 7上安裝並配置 Python 3.6 環境 超詳細的 Linux CentOS 編譯安裝python3 Linux編譯安裝python3

前言 按照此方法安裝保證以下報錯什麼的統統都沒有! 基礎環境 系統:centos7.4 軟體:python3 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connect

linux環境編譯執行OpenCV程式的兩種方法

  原來以為在Ubuntu下安裝好了OpenCV之後,自己寫個簡單的程式應該很容易吧,但是呢,就是為了編譯一個簡單的顯示圖片的程式我都快被弄崩潰了。   在谷歌和上StackOverFlow檢視相關問題解答之後,我下面就介紹Command Line和CMake兩種方式。

LinuxQT及OpenCV搭建,以及交叉編譯OpenCV

由於word圖片很多,不方便上傳,所以改成圖片 為了方便大家複製貼上,文件已經上傳(不需要積分),下載地址: http://download.csdn.net/detail/bizer_csdn/9560001 注意交叉編譯OpenCV時候,選不同版本可能需要改原始碼,

Linux編譯安裝python3

 Linux下大部分系統預設自帶python2.x的版本,最常見的是python2.6或python2.7版本,預設的python被系統很多程式所依賴,比如centos下的yum就是python2寫的,所以預設版本不要輕易刪除,否則會有一些問題,如果需要使用最新的Pyth

linux編譯安裝python3.6.2即是升級本機的python2版本到3

cd /usr/local/src wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz            如果無法下載則下載到本地然後sz即可 tar -zxf  Python-3.6.2.tgz

Linux 編譯安裝 Python3

Linux 下預設系統自帶 python2 的版本,這個版本被系統很多程式所依賴,所以不建議刪除,如果使用最新的 Python3 那麼我們知道編譯安裝原始碼包和系統預設包之間是沒有任何影響的,所以可以

Opencv學習1: 在Linux編譯執行第一個opencv程式

前一段在安裝Caffe時候把Opencv2.4.11版本安裝在redhat6.4系統上,為了測試在Linux下如何編譯執行opencv程式碼,特意查詢了網上相關資料(主要參考三個網頁)。本文主要給出三種編譯執行的方式:命令列的方式;Makefile(兩種)方式;

Linux安裝Python3的django並配置mysql作為django默認數據庫(轉載)

make lba del log pri ica www src rim 我的操作系統為centos6.5 1 首先選擇django要使用什麽數據庫。django1.10默認數據庫為sqlite3,本人想使用mysql數據庫,但為了測試方便順便要安裝一下sqlite開發

奪命雷公狗---linux NO:42 linux編譯apache

amp ima -1 輸入 inux png apach logs lin 我們先來到apache官網下載他,地址:http://httpd.apache.org/ 鼠標右鍵將他的地址復制出來,然後到linux 服務器上進行 wget 將他下載出來,如下所示

Linux安裝Python3.x和第三方庫

方便 tls libpcap 輸入 zlib cert ase $path pip安裝 如果本機安裝了python2,盡量不要管他,使用python3運行python腳本就好,因為可能有程序依賴目前的python2環境, 比如yum!!!!! 不要動現有的python2環境

Linux編譯安裝memcached

linux memcache 一.在編譯安裝之前,先安裝系統所需要的相關庫文件#yum -y install gcc gcc-c++ make cmake libtool autoconf libaio二.下載相應的依賴庫和memcached源碼包1.從http://libevent.org/下載li

windows編譯python3.6

python3 pytho sof 3.6 只需要 bsp .exe .cn 技術分享 在pcbuild文件夾下找到pcbuild.sln文件.在readme裏面有 Install Microsoft Visual Studio 2015, any edition. 所

linux編譯安裝php各種報錯大集合

linuxPHP開源腳本語言PHP(外文名: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,入門門檻較低,易於學習,使用廣泛,主要適用於Web開發領域。PHP的文件後綴名為php。本文為大家整理匯總了一些linux

Linux 編譯並安裝配置 Qt 4.53全過程

雙擊 win port 環境 簡單的 類型 http you ner 最近準備做 Nokia 的 Symbian,Maemo 下觸摸屏開發。考慮到程序的跨平臺可移植性,最終選擇使用 Qt 開發。相對來說,國內關於 Qt 相關文檔並不算很多。作者將 Linux

arm linux編譯庫System.Net.Primitives.dll和System.Xml.XmlSerializer.dll

cad serial linu 5.4 mcs download 切換 mon dll 1.環境: /home/jello # uname -aLinux 3.10.0 #2 SMP Mon Mar 6 17:52:09 CST 2017 armv7l GNU/Linux

Linux編譯安裝XLib庫

問題 fun col bsp source 過程 知識 4.2 span 新裝好的redhat7.3,在安裝qt的時候,有時會出現 Basic XLib functionality test failed!You might need to modify the inclu

Linux安裝Python3.6和第三方庫

python安裝一、安裝Python-3.6.2.tgz安裝依賴環境最小化安裝Redhat6.4環境下yum -y install gcc make zlib-devel bzip2-devel ncurses-devel readline-devel(yum -y install gcc mak

Linux安裝Python3

entos ln -s south conf usr python2.6 使用 3.6 uri 很久之前就打算在Linux環境下學習Python,今天閑來沒事就先把Python3裝上。 我用的Linux系統是centos6.5,默認帶有Python2,但是Python2與P

Linux 編譯Xerces-c++

linu ida 共享 ++ blank 這樣的 gunzip pad -c 原文地址: http://blog.csdn.net/chenlanmin/article/details/2200064 按照 doc/html 文件夾中的詳細指導編譯 Xerces-C++ 共