1. Why Python
C/C++
早期的計算機視覺領域大多數(shù)程序都是用C/C++編寫。隨著計算機硬件速度越來越快,開源平臺越來越多,開發(fā)者選擇計算機視覺算法的實現(xiàn)語言變得更加靈活,代碼編寫的效率和易用性成為選擇編寫語言時的考慮因素,而不再僅僅只考慮執(zhí)行效率。
?
Python
Python的跨平臺、開放性、易用性,加之豐富的資源使其成為近年來越來越多開發(fā)者的選擇。國外出版了大量的Python編程、學習書籍,亞馬遜搜索Python圖書,結果列表長達100頁共5712本(截止2016年5月28日)。你也可以從諸如Coursera或Edx等mooc平臺找到像MIT校長講授的Python入門等課程。國內也引進了許多優(yōu)秀的學習資料和許多在線課程。除了這些學習資料,更重要的是Python自帶很多可免費獲取的強大而便捷的圖像處 理、數(shù)學計算和數(shù)據(jù)挖掘模塊和豐富的其他網絡資源。
本文以windows平臺為例,介紹使用Python進行計算機視覺編程的開發(fā)環(huán)境搭建與基本配置,總結了軟件下載地址、安裝方法和開發(fā)環(huán)境搭建的基本方法,并提供了簡單的代碼示例。想說的是,Python安裝方法與系統(tǒng)、軟件版本等諸多因素有關,要想一步到位比較難,遇到問題多種方式可以混合嘗試。
2.下載安裝軟件包
Python機器視覺編程環(huán)境的常用配置如下:
Python:Pyhton2.7或Python3.x
pip:python的一個包管理器,安裝后可方便的引入第三方庫
NumPy:該模塊用于python計算機視覺編程時的向量、矩陣的表示與操作
SciPy:更高級的數(shù)學計算模塊
Matplotlib:結果可視化模塊
PIL:Python的圖像處理類庫,提供通用的圖像處理功能及大量基本圖像操作
LIBSVM:用于機器學習的開源庫
OpenCV:流行的開源機器視覺算法庫,提供越來越多的Python接口,目前支持到Python2.7
2.1 Python
版本選擇:
選擇Python2還是Pyhton3這是一個問題,我們需要知道的:
Python2:用的人多,坑少,大多數(shù)第三方庫目前都支持。
Python3:重大改進,發(fā)展趨勢。但有些第三方庫目前還支持不到3.x。
Python3與Python2有很多語法差異,并且不兼容2.x版本。
對初學者,可以先學Pyhton2.7,等第三方庫支持較好了再學習Python3,也會比較快入手。
安裝并添加環(huán)境變量:
下載與操作系統(tǒng)對應的版本,運行安裝,這里選擇默認安裝路徑C:Python27。
然后添加Python的安裝路徑到系統(tǒng)環(huán)境變量PATH中:計算機->右鍵->屬性->高級系統(tǒng)設置,系統(tǒng)環(huán)境變量后加“;”號,然后添加python2.7的路徑,確定。
這樣,命令行即可直接運行Pyhton,并查看版本信息
2.2 安裝pip
pip是python中的一個包管理器,就是在電腦中自動安裝、配制、卸載和升級軟件包的工具組合。pip可以代替之前的easy_install,可方便的引入第三方庫。
目前最新版本為PIP-8.1.2。
安裝并添加系統(tǒng)環(huán)境變量:
下載對pip-8.1.2.tar.gz壓縮包,打開cmd,進入相應解壓目錄使用命令行安裝。
例如,下載的是PIP-8.1.2.tar.gz壓縮包,解壓后得到pip-8.1.2文件夾。將該拷貝到Python安裝目錄C:Python27下(不拷貝到這個文件夾也可以),打開cmd進入pip-8.1.2目錄下運行:
python setup.py install
?
然后再次編輯系統(tǒng)環(huán)境變量,將C:Python27Scripts也添加到Path,這樣可以方便的運行pip
有了pip可以在命令行使用 pip install xxx 的方法方便的安裝所需的第三方庫,例如下面的NumPy和SciPy等第三方庫了。
2.3 NumPy
NumPy(Numeric Python)是Python的一種開源的數(shù)值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表(nested list structure)結構要高效的多(該結構也可以用來表示矩陣(matrix))。提供了許多高級的數(shù)值編程工具,如:矩陣數(shù)據(jù)類型、矢量處理,以及精密的運算庫。專為進行嚴格的數(shù)字處理而產生。
NumPy和SciPy都可以在 下載。
安裝:
方法1:
下載源碼,打開cmd,進入相應目錄使用命令行安裝
python setup.py install
方法2:
windows系統(tǒng)可以下載對應版本的.exe文件,如numpy-1.9.2-win32-superpack-python2.7.exe安裝。
方法3:
使用pip直接安裝NumPy
pip install numpy
可能會因為網速等原因安裝不成功,多試幾次。本機安裝時試了兩次裝成功。
2.4 SciPy
SciPy (Scientific Computing Tools for Python) 是一款方便、易用的python的科學和工程計算工具包。它包括統(tǒng)計,優(yōu)化,整合,線性代數(shù)模塊,傅里葉變換,信號和圖像處理,常微分方程求解器等。
方法3:
同樣也可以使用pip直接安裝scipy
pip install scipy
2.5 PIL
PIL (Python Imaging Library) Python圖像處理類庫。提供了通用的圖像處理功能,以及大量游泳的基本圖像操作,如圖像縮放、裁剪、色彩空間轉換等。
安裝:
方法1:
下載源碼,打開cmd,進入相應目錄使用命令行安裝
python setup.py install
方法2:
windows系統(tǒng)可下載.exe文件,如PIL-1.1.7.win32-py2.7.exe安裝。注意PIL目前免費版支持到Python2.7。
方法3:
使用pip安裝
pip install PIL
2.6 matplotlib
matplotlib是一個2維Pyhton跨平臺交互式繪圖庫。
安裝說明文檔 提示在windows平臺安裝matplot需要安裝相應版本的setuptools, numpy, python-dateutil, pytz, pyparsing, 和 cycler。具體下載地址在該頁面下方有。本機只預先裝了numpy,其他包可能在pip安裝時自動下載安裝了吧。大家可以先試試下面的方法2。
安裝:
方法1:
使用pip離線安裝.whl文件。將上述下載地址下載好的matplotlib-1.5.1-cp27-none-win32.whl拷入某文件夾
pip install e:教程pythonmatplotlib matplotlib-1.5.1-cp27-none-win32.whl
方法2:
使用pip在線安裝
pip install matplotlib
2.7 LIBSVM
LIbSVM是***同胞為世界機器學習的卓越貢獻之一,目前支持Python, R, MATLAB, Perl, Ruby, Weka, CommonLISP, CLISP, Haskell, OCaml, LabVIEW, and PHP interfaces. C# .NET code and CUDA多種語言。
下載地址:
~cjlin/libsvm/
下載LIBSVM軟件包libsvm-3.21.zip文件
安裝:
windows下安裝python的LIBSVM模塊及其艱難,請務必做好思想準備:windows下安裝LIBSVM最常見問題出在libsvm.dll文件上,關鍵是要用正確版本的libsvm.dll文件替換windows下的libsvm.dll文件。
在嘗試網上各種方法未果后,終于找到一個在本機環(huán)境下能用的方法,并且此方法比較簡便,僅供大家參考。本機環(huán)境為:
系統(tǒng)為win7 64位
下載的LIBSVM版本是libsvm-3.21壓縮包
python安裝路徑C:Python27
Python版本:2.7.11 win32位
(1)將下載的libsvm-3.21壓縮包解壓到C盤根目錄下(其他文件夾也可)
將libsvm-3.21解壓到C:libsvm-3.21
(2)下載libsvm-3.21的.whl文件
到以下網址下載與自己Python版本對應的LIBSVM的.whl文件:
拷貝到某目錄,例如:e:教程pythonLibsvm
(3)使用pip安裝libsvm-3.21-cp27-none-win32.whl
運行cmd,使用pip安裝上述.whl文件:
pip install e:教程pythonlibsvmlibsvm-3.21-cp27-none-win32.whl
現(xiàn)在,符合本機環(huán)境和軟件版本的LIBSVM就被存放到你python安裝目錄下的Libsite-packages文件夾中,其中有一個libsvm-3.21.dist-info文件夾,里面都是說明文件。
(4)將安裝生成的libsvm.dll替換C:libsvm-3.21windows下的libsvm.dll
使用安裝生成的C:Python27Libsite-packages下的libsvm.dll替換C:libsvm-3.21windows下的libsvm.dll。至此,libsvm.dll文件和你電腦的版本號完全對應,安裝完成,本文在第3節(jié)測試安裝。
本方法參考了下文:
2.8 OpenCV
OpenCV是業(yè)界最常用的開源機器視覺庫,無需多介紹。目前OpenCV僅支持到Python2.7。
安裝:
下載文件opencv-2.4.10.exe是一個自解壓縮文件,將解壓后的文件夾opencv->build->python->2.7->x86中的 cv2.pyd復制到:C:Python27Libsite-packages 中即可。
3. 測試安裝:示例程序
3.1 NumPy+PIL
Python IDLE GUI新建File,輸入如下代碼,保存后F5運行
from PIL import Image
pil_im =Image.open("f:/images/Lena.jpg").convert('L')
pil_im.show()
值得注意的是:
windows7下PythonPIL庫show()函數(shù)顯示圖片有問題,解決方法是在將Python安裝目錄下的Lib/site-packages/PIL目錄下的 ImageShow.py 文件的第 99 行進行替換:
將原
return "start /wait %s && del/f %s" % (file, file)
替換為
return "start /wait %s && PING127.0.0.1 -n 5 > NUL && del /f %s" % (file, file)
替換后圖片將使用windows圖片查看器打開。
NumPy參考文檔:
PIL參考文檔:
?
3.2 NumPy+Matplotlib
打開Python,F(xiàn)ile->New File,輸入如下代碼,保存,F(xiàn)5運行
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X,C)
plt.plot(X,S)
plt.show()
更多示例參考:
幫助文檔:
?
3.3 LIBSVM
2.7節(jié)已經安裝配置好了LIBSVM,打開IDLE (PythonGUI),新建一個文件,輸入如下代碼:
import os
os.chdir('C:libsvm-3.21python')
from svmutil import *
y, x = svm_read_problem('../heart_scale')
m = svm_train(y[:200], x[:200], '-c 4')
p_label, p_acc, p_val = svm_predict(y[200:], x[200:], m)
取個文件名(例如svmlib_test1.py)保存后,按F5運行,運行結果如下,說明安裝成功
===================== RESTART:D:Pythonsvmlib_test1.py =====================
Accuracy = 84.2857%(59/70) (classification)
3.4 OpenCV
打開解壓后opencv文件夾中的sourcesamplespython
選擇drawing.py右鍵->Edit with IDLE
如果沒有問題應該看到變換的彩色條紋:
自己寫個顯示圖像的例子,新建文件,輸入代碼
import cv2
im = cv2.imread("f:/images/Lena.jpg")
imGray = cv2.imread('f:/images/Lena.jpg',cv2.CV_LOAD_IMAGE_GRAYSCALE)
cv2.imshow("WinName",im)
cv2.imshow("Gray WinName",imGray)
cv2.waitKey()
保存,F(xiàn)5運行,結果如下
Python機器視覺編程環(huán)境搭建過程比較繁瑣,每一步可能都有多種方法,也可能有各種問題,本文總結的是書上和網友給出的部分方法,難免疏漏,僅供參考。
評論