程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python模型+OPencv用C++編譯記錄

編輯:Python

零、基本知識
(1)所在的環境:在百度雲服務器上新安裝的centos7.4系統
(2)常用代碼:

tar zxvf filename.tar #tar解包
tar czvf filename.tar dirname #tar打包

一、安裝cmake
(1)下載網址:https://cmake.org/files/v3.10/cmake-3.10.3-Linux-x86_64.sh,復制 cmake-3.10.3-Linux-x86_64.sh到/home/backup下.
(2)sudo sh cmake-3.10.3-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir
(3)檢查版本

使用cmake -version查看cmake版本
使用ccmake -version查看ccmake版本

(4)備注,卸載cmake(未成功,需謹慎)
找到make install之後產生的這個文件install_manifest.txt
裡面有安裝的所有東西的路徑,刪除它們即可。
參考命令:cat install_manifest.txt | sudo xargs rm
驗證是否卸載了的命令:sudo yum remove cmake
卸載原有cmake : yum -y remove cmake
搜索: find / -name cmake (將搜到的全部刪掉)
二、安裝python2的相關插件
目前python2中沒有預裝pip命令,所以還需要自己裝pip命令,方便安裝python用到的各種包。
(1)首先檢查有沒有安裝python-pip,可直接執行命令 yum install python-pip
(2)如果上一步報錯,需要先執行 yum -y install epel-release;成功epel後再執行 yum install python-pip 即可正常安裝pip
(3)安裝完python-pip 後最後再執行下升級命令: pip2 install --upgrade pip
(4)驗證下pip2是否可用,可執行命令 pip2 install requests 安裝requests包
三、安裝anaconda
(1)將Anaconda3-5.2.0-Linux-x86_64.sh放入/home/backup中。運行 sh Anaconda3-5.2.0-Linux-x86_64.sh,安裝位置選擇/opt/install/anaconda3.
(2)Do you wish the installer to prepend the Anaconda3 install location to PATH in your /root/.bashrc ?[yes|no]。選yes.沒選的話,後面自己添加。
(3)Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]。一般用不到,選”no”
(4)source /root/.bashrc
(5)驗證是否可用: python。退出python程序,需輸入:exit()
四、源碼編譯安裝opencv
(1)yum update
(2)gcc 升級

yum -y install centos-release-scl
yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils
scl enable devtoolset-6 bash

需要注意的是scl命令啟用只是臨時的,退出shell或重啟就會恢復原系統gcc版本。如果要長期使用gcc 6.3的話:

echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile

(3)essential安裝

yum install kernel-devel #安裝gcc-essential
yum install gcc-gfortran #安裝gfortran
安裝完後,可以用 gcc -v 、g++ -v 和 fortran -v 查看版本。

(4)gtk2.0安裝

yum install git #安裝git
yum install libgnomeui-devel #安裝必要文件包(gtk 圖形化界面庫)
yum install gtk2 gtk2-devel gtk2-devel-docs #安裝必要組件
yum install gnome-devel gnome-devel-docs #安裝可選組件

(5)pkg-config安裝
一般電腦自帶就行,查看版本:pkg-config --version
(6)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
yum -y install ffmpeg ffmpeg-devel #安裝ffmpeg 依賴

測試ffmpeg有沒有安裝成功: ffmpeg -version
(7)安裝opencv其他依賴項:

yum install python-devel numpy
yum install libdc1394-devel
yum install libv4l-devel
yum install gstreamer-plugins-base-devel
yum -y install ant(安裝ant,流淚推薦)

(8)編譯opencv
把opencv-3.4.5.zip復制到/root下面。然後解壓並進入:unzip opencv-3.4.5.zip

cd opencv-3.4.5
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..

注意查看編譯信息,這裡安裝的python2版本。

-- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.5", minimum required is "2.7")
-- Found PythonLibs: /lib64/libpython2.7.so (found suitable exact version "2.7.5")
-- Found PythonInterp: /root/anaconda3/bin/python3 (found suitable version "3.6.5", minimum required is "3.2")
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (Required is exact version "3.6.5")
-- Looking for ccache - not found

上面如果CMAKE_INSTALL_PREFIX安裝目錄不指定,默認是安裝到/usr/local下和系統放一塊(建議默認,非默認不負責),完成之後可以查看支持的相關擴展,沒問題執行編譯並安裝:

make
make install

(9)opencv配置與加載動態庫
(9.1)路徑添加和加載:

進入目標文件: cd /etc/ld.so.conf.d
添加opencv.conf文件: touch opencv.conf
添加opencv編譯產生的lib庫路徑到opencv.conf中,如下命令:
/bin/bash -c 'echo "/usr/local/opencv3/lib64" > /etc/ld.so.conf.d/opencv.conf'
加載: sudo ldconfig

注意:在其他linux系統中可能有區別,但是意在讓系統知道opencv lib庫的路徑,能夠完成動態加載。
(9.2)添加PATH

輸入命令vi /etc/bashrc
在文件末尾另起行加入 export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/$PKG_CONFIG_PATH
保存退出
輸入source /etc/bashrc使配置生效
輸入updatedb更新數據庫

(9.3)pkg-config配置
默認的pkg搜索鏈接路徑/usr/lib64/pkgconfig。需要將opencv.pc拷貝到pkg的默認路徑下。

cp /usr/local/opencv3/lib64/pkgconfig/opencv.pc /usr/lib64/pkgconfig

五、安裝 pytorch和libtorch

conda install pytorch-cpu==1.0.0 torchvision-cpu==0.2.1 cpuonly -c pytorch #由於其中自帶了python-3.6.6版本。所以我懷疑以前裝的anaconda沒有什麼作用。
https://download.pytorch.org/libtorch/cpu/libtorch-win-shared-with-deps-1.3.1.zip #放在/opt/install

六、其他准備

yum install gperftools-libs #這個沒必要

七、運行實例
(7.1)運行命令

cmake -DCMAKE_PREFIX_PATH=/opt/install/libtorch .. #成品見 路徑 /home/project/example04/example-app08/build

八、查看python2的配置,准備編譯
(8.1)系統配置

locate python2.7-config #首先查找python2.7-config的位置
/usr/bin/python2.7-config --cflags #pythonX.Y-config --cflags will give you the recommended flags when compiling
/usr/bin/python2.7-config --ldflags #pythonX.Y-config --ldflags will give you the recommended flags when linking

(8.2)CMakeLists內容

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(custom_ops)
include_directories(/usr/include/python2.7)
link_directories(/usr/lib64/python2.7/config)
add_executable(example-app example-app.cpp)
target_link_libraries(example-app python2.7)
set_property(TARGET example-app PROPERTY CXX_STANDARD 11)

(8.3)example-app.cpp中記得加上初始化

PyRun_SimpleString("import sys");
PyRun_SimpleString("print '---import sys---'");
PyRun_SimpleString("sys.path.append('../')");

(8.4)在build文件夾下的命令:

./example-app multiply multiply 3 3

(8.5)pip2安裝pillow/numpy


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved