python的PLT中的image和skimage处理图片

用PLT比较轻量级,用opencv是比较重量级

import numpy as np
from PIL import Image

if __name__ == '__main__':
    image_file = '/Users/mac/Documents/学习文档/机器学习/5.Package/son.png'
    height = 100 #假定写入图片的高度是100

    img = Image.open(image_file)
    img_width, img_height = img.size  #获取img的尺寸
    width = 2 * height * img_width // img_height    # 假定字符的高度是宽度的2倍,写入图片的高度是宽度的2倍
    img = img.resize((width, height), Image.ANTIALIAS)  #改变尺寸,将新定的宽度,高度重定img的size赋给img
    pixels = np.array(img.convert('L'))  #转成灰度值喂给array,pixels是个存灰度值的数组
    print(pixels.shape)
    print(pixels)
    chars = "MNHQ$OC?7>!:-;. "  #256色的不同通道浓淡,M代表0-15,N代表16-31
    N = len(chars)
    step = 256 // N
    print(N)
    print step
    result = ''
    for i in range(height):
        for j in range(width):
            result += chars[pixels[i][j] // step] #像素点的值除以step是可以找到step这个像素点的位置,char做素引,是指对应的该
            #点的值填充成上面更浓的色,故就显示出来了
        result += '\n'
    with open('text.txt', mode='w') as f:
        f.write(result)

用PIT详解步骤:

img = Image.open(path)#打开图片   
img.getpixel((height, width))#得到(height, width)处的像素值(可能是一个list,3通道)  
img.convert("L")#转灰度图  

python的PLT中的image和skimage处理图片_第1张图片

size = (64, 64)  
img.resize(size, Image.ANTIALIAS)#改变尺寸  

python的PLT中的image和skimage处理图片_第2张图片

box = (10, 10, 100, 100)  
img.crop(box).show#在img上的box处截图,show显示图片

python的PLT中的image和skimage处理图片_第3张图片

#shape[0]-1梯度下降的办法取x,y值,再将img_data[x][y][0]x,y处0通道赋255色值
img_data = np.array(img)  
 for i in xrange(300):  
   x = random.randint(0, img_data.shape[0]-1)  
   y = random.randint(0, img_data.shape[1]-1)  #shape[0]是表几行,shape[1]表示几列,y在列向量上故用shape[1]
   img_data[x][y][0] = 255  
   img = Image.fromarray(img_data)#加300个噪音,转来转去麻烦可以直接用skimage度图片就不用转了 
img.show()
img.rotate(90)#图片旋转90  
img.transpose(Image.FLIP_LEFT_RIGHT)#图片镜像  

python的PLT中的image和skimage处理图片_第4张图片
二、skimage打开的图片img_data:

from skimage import io,transform  
img_data = io.imread(img_path)  
transform.resize(img_data, (64, 64))#改变尺寸  

python的PLT中的image和skimage处理图片_第5张图片

transform.rescale(img_data, 0.5)#缩小/放大图片  

你可能感兴趣的:(机器学习/大数据)