Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法,可以用Matplotib 显示图像,放大图像,保存图像等等,对于OpenCV处理图像具有非常大的帮助。但是,安装Matplotib 会遇到一系列问题,因为matplotlib 需要依赖许多其他科学计算的第三方库,就需要一个一个的安装了。
下面就是基于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()
实现效果: