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")#转灰度图  

这里写图片描述

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)#缩小/放大图片  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值