用plt比较轻量级,用opencv是比较重量级
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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详解步骤:
1
|
img = image. open (path) #打开图片 |
1
|
img.getpixel((height, width)) #得到(height, width)处的像素值(可能是一个list,3通道) |
1
|
img.convert( "l" ) #转灰度图 |
1
2
|
size = ( 64 , 64 ) img.resize(size, image.antialias) #改变尺寸 |
1
2
|
box = ( 10 , 10 , 100 , 100 ) img.crop(box).show #在img上的box处截图,show显示图片 |
1
2
3
4
5
6
7
8
|
#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() |
1
|
img.rotate( 90 ) #图片旋转90 |
1
|
img.transpose(image.flip_left_right) #图片镜像 |
二、skimage打开的图片img_data:
1
2
3
|
from skimage import io,transform img_data = io.imread(img_path) transform.resize(img_data, ( 64 , 64 )) #改变尺寸 |
1
|
transform.rescale(img_data, 0.5 ) #缩小/放大图片 |
以上这篇对python plt中的image和skimage处理图片方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u012474716/article/details/78741194