Matplotib 是python 的一個繪圖庫,里頭有各種各樣的繪圖方法,可以用Matplotib 顯示圖像,放大圖像,保存圖像等等,對於OpenCV處理圖像具有非常大的幫助。但是,安裝Matplotib 會遇到一系列問題,因為matplotlib 需要依賴許多其他科學計算的第三方庫,就需要一個一個的安裝了。(OpenCV的基本配置請參見上一貼 http://www.cnblogs.com/sopic/p/4753413.html )
下面就是基於win7 32/64位系統完整解決方案:
Python第三方模塊中一般會自帶setup.py文件,在Windows環境下,我們只需要使用cmd命令:
cd c:\python\..
python setup.py install
兩個命令就可以完成第三方模塊的安裝了。
第一個cd命令將當前目前切換到待安裝的第三方模塊的目錄下(這里假設第三方模塊解壓后的目錄為c:\python278\..)若在其他盤符,例如G盤,則先執行D:,第二個命令就執行安裝了。
安裝的過程中可能會出現“ImportError: No module named setuptools”的錯誤提示,這是新手很常遇見的錯誤提示。不用擔心,這是因為Windows環境下Python默認是沒有安裝setuptools這個模塊的,這也是一個第三方模塊。
1, 安裝setuptools
官網直接下載:http://pypi.python.org/pypi/setuptools
如果是Windows環境的話,下載setuptools-18.2.zip,解壓,進入目錄,雙擊ez_setup.py,即可完成安裝。
安裝了setuptools之后,再運行“python setup.py install”就可以方便地安裝各種第三方模塊了。
2, 安裝matplotlib
官網直接下載:http://matplotlib.sourceforge.net/
找到對應版本的.exe文件安裝完畢之后,我用的是matplotlib-1.4.3-py2.7, 直接 import matplotlib,
報錯如下:
之后就是安裝 six了
3, 安裝six
官網下載:http://www.pythonhosted.org/six/
我下載的是 six-1.9.0 的源碼壓縮包six-1.9.0.tar.gz, 解壓之后,進入解壓目錄,命令行執行 python setup.py install 就可以安裝完成。
之后再次import matplotlib 還是缺少庫: dateutil
4, 安裝dateutil
官網下載:https://pypi.python.org/pypi/python-dateutil/1.4.1
我下載的是 python_dateutil-1.4.1-py2.7, 源碼安裝 同樣到解壓目錄下,執行 python setup.py install 同樣可以安裝成功,
繼續執行:import matplotlib ;依舊報錯: 缺少 pyparsing庫
5, 安裝pyparsing
官網下載: http://sourceforge.net/projects/pyparsing/files/pyparsing/pyparsing-2.0.3/
下載pyparsing-2.0.3.win32-py2.6.exe,雙擊運行,安裝完成====
仍然 import matplotlib,還是缺少: numpy:
6, 安裝numpy
下載numpy-1.9.1-win32-superpack-python2.7.exe,安裝numpy 成功:
執行 import matplotlib OK!可以愉快地在Python上使用openCV了!
測試代碼:
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread("finger.jpg") cv2.imwrite('1gray.png',img) cv2.namedWindow("Image") cv2.imshow("Image", img) plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.show() k = cv2.waitKey(0)&0xFF if k == 27: # wait for ESC key to exit cv2.destroyAllWindows() elif k == ord('s'): # wait for 's' key to save and exit cv2.imwrite('messigray.png',img) cv2.destroyAllWindows()
實現效果: