对python PLT中的image和skimage处理图片方法详解

yipeiwu_com7年前Python基础

用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处理图片

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

python PLT中的image和skimage处理图片

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

python PLT中的image和skimage处理图片

#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处理图片

二、skimage打开的图片img_data:

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

python PLT中的image和skimage处理图片

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

以上这篇对python PLT中的image和skimage处理图片方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

解决python3 HTMLTestRunner测试报告中文乱码的问题

使用HTMLTestRunner输出的测试报告中,标题和错误说明的中文乱码。 环境: python v3.6 HTMLTestRunner v0.8.2 定位问题 刚开始以为是pytho...

Python实现桶排序与快速排序算法结合应用示例

Python实现桶排序与快速排序算法结合应用示例

本文实例讲述了Python实现桶排序与快速排序算法结合应用的方法。分享给大家供大家参考,具体如下: #-*- coding: UTF-8 -*- import numpy as np...

基于wxpython实现的windows GUI程序实例

本文实例讲述了基于wxpython实现的windows GUI程序。分享给大家供大家参考。具体如下: # using a wx.Frame, wx.MenuBar, wx.Menu,...

python连接PostgreSQL数据库的过程详解

1. 常用模块 # 连接数据库 connect()函数创建一个新的数据库连接对话并返回一个新的连接实例对象 PG_CONF_123 = { 'user':'emma', 'p...

python中二维阵列的变换实例

本文实例讲述了python中二维阵列的变换方法。分享给大家供大家参考。具体方法如下: 先看如下代码: arr = [ [1, 2, 3], [4, 5, 6], [7, 8,9],...