Python使用scipy和numpy操作处理图像
2014-12-21 00:03
706 查看
之前使用Python处理数据的时候都是一些简单的plot。今天遇见了需要处理大量像素点,并且显示成图片的问题,无奈水浅,一筹莫展。遂Google之。
找到如下站点,真心不错。准备翻译之~~~
http://scipy-lectures.github.io/advanced/image_processing/index.html
Creating a numpy array from an image file:
>>>
dtype is uint8 for 8-bit images (0-255)
Opening raw files (camera, 3-D images)
>>>
Need to know the shape and dtype of the image (how to separate databytes).
For large data, use np.memmap for memory mapping:
>>>
(data are read from the file, and not loaded into memory)
Working on a list of image files
>>>
imshow to display an image inside amatplotlib
figure:
>>>
Increase contrast by setting min and max values:
>>>
Draw contour lines:
>>>
[Python source code]
找到如下站点,真心不错。准备翻译之~~~
http://scipy-lectures.github.io/advanced/image_processing/index.html
2.6.1. Opening and writing to image files
Writing an array to a file:from scipy import misc l = misc.lena() misc.imsave('lena.png', l) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(l) plt.show()
Creating a numpy array from an image file:
>>>
>>> from scipy import misc >>> lena = misc.imread('lena.png') >>> type(lena) <type 'numpy.ndarray'> >>> lena.shape, lena.dtype ((512, 512), dtype('uint8'))
dtype is uint8 for 8-bit images (0-255)
Opening raw files (camera, 3-D images)
>>>
>>> l.tofile('lena.raw') # Create raw file >>> lena_from_raw = np.fromfile('lena.raw', dtype=np.int64) >>> lena_from_raw.shape (262144,) >>> lena_from_raw.shape = (512, 512) >>> import os >>> os.remove('lena.raw')
Need to know the shape and dtype of the image (how to separate databytes).
For large data, use np.memmap for memory mapping:
>>>
>>> lena_memmap = np.memmap('lena.raw', dtype=np.int64, shape=(512, 512))
(data are read from the file, and not loaded into memory)
Working on a list of image files
>>>
>>> for i in range(10): ... im = np.random.random_integers(0, 255, 10000).reshape((100, 100)) ... misc.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()
2.6.2. Displaying images
Use matplotlib andimshow to display an image inside amatplotlib
figure:
>>>
>>> l = misc.lena() >>> import matplotlib.pyplot as plt >>> plt.imshow(l, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x3c7f710>
Increase contrast by setting min and max values:
>>>
>>> plt.imshow(l, cmap=plt.cm.gray, vmin=30, vmax=200) <matplotlib.image.AxesImage object at 0x33ef750> >>> # Remove axes and ticks >>> plt.axis('off') (-0.5, 511.5, 511.5, -0.5)
Draw contour lines:
>>>
>>> plt.contour(l, [60, 211]) <matplotlib.contour.ContourSet instance at 0x33f8c20>
[Python source code]
相关文章推荐
- 使用Numpy和Scipy处理图像
- 使用Numpy和Scipy处理图像
- 使用Numpy和Scipy处理图像
- 使用Numpy和Scipy处理图像
- 使用Numpy和Scipy处理图像
- 使用OpenCV读、操作、写图像并与bash合作对某个目录下所有图像进行类似处理
- 使用python和numpy,scipy做FIR带通滤波实验
- Python 之 使用 PIL 库做图像处理
- Python 之 使用 PIL 库做图像处理
- Python 之 使用 PIL 库做图像处理
- Python-Image 基本的图像处理操作
- Python 之 使用 PIL 库做图像处理
- Python下opencv使用笔记(四)(图像的阈值处理)
- Python 之 使用 PIL 库做图像处理
- python 视觉:基本的图像操作和处理
- Python图像处理库(PIL)的安装与简单使用
- Python 之 使用 PIL 库做图像处理
- 分享一个连接,python扩展包下载地址分享包括numpy,scipy等,解决了win8系统不能使用这些扩展包的问题!
- Python Matplotlib的安装使用及Scipy,numpy,dateutil,pyparsing的安装