the*_*eta 5 python numpy matplotlib scipy python-imaging-library
请考虑这个可重复的例子:
from PIL import Image
import numpy as np
import scipy.misc as sm
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cbook as cbook
import urllib
datafile = cbook.get_sample_data('lena.jpg')
lena_pil = Image.open(datafile)
lena_pil_np = np.asarray(lena_pil)
lena_scipy = sm.lena()
lena_tmp = open('lena_tmp.png', 'wb')
lena_tmp.write(urllib.urlopen('http://optipng.sourceforge.net/pngtech/img/lena.png').read())
lena_tmp.close()
lena_mpl = mpimg.imread('lena_tmp.png')
sm.info(lena_pil_np)
sm.info(lena_scipy)
sm.info(lena_mpl)
Run Code Online (Sandbox Code Playgroud)
输出是:
>>> sm.info(lena_pil_np)
class: ndarray
shape: (512, 512, 3)
strides: (1536, 3, 1)
itemsize: 1
aligned: True
contiguous: True
fortran: False
data pointer: 0xb707e01cL
byteorder: little
byteswap: False
type: uint8
>>> sm.info(lena_scipy)
class: ndarray
shape: (512, 512)
strides: (2048, 4)
itemsize: 4
aligned: True
contiguous: True
fortran: False
data pointer: 0xb6f7d008L
byteorder: little
byteswap: False
type: int32
>>> sm.info(lena_mpl)
class: ndarray
shape: (512, 512, 3)
strides: (6144, 12, 4)
itemsize: 4
aligned: True
contiguous: True
fortran: False
data pointer: 0xb6c7b008L
byteorder: little
byteswap: False
type: float32
Run Code Online (Sandbox Code Playgroud)
所以所有阵列都有不同的形状和类型.
对于其他处理,我希望这个数组在最后一个变量中表示lena.mpl,或者只是将数组值转换为它们的规范化[0..1] float32类型.
做这个的最好方式是什么?
def normalize(arr):
arr=arr.astype('float32')
if arr.max() > 1.0:
arr/=255.0
return arr
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4617 次 |
| 最近记录: |