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

来源:互联网 发布:2017百万公众网络测试 编辑:程序博客网 时间:2024/05/15 08:39

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

import numpy as npfrom PIL import Imageif __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")#转灰度图  

这里写图片描述

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

这里写图片描述

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

这里写图片描述

#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)#图片镜像  

这里写图片描述
二、skimage打开的图片img_data:

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

这里写图片描述

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