lamp网站开发黄金组...,设计素材网站千图网,抖音同城推广,文旅网站界面设计使用python进行图片处理#xff0c;现在需要读出图片的任意一块区域#xff0c;并将其转化为一维数组#xff0c;方便后续卷积操作的使用。下面使用两种方法进行处理#xff1a;convert 函数from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef Im…使用python进行图片处理现在需要读出图片的任意一块区域并将其转化为一维数组方便后续卷积操作的使用。下面使用两种方法进行处理convert 函数from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef ImageToMatrix(filename):im Image.open(filename) # 读取图片im.show() # 显示图片width,height im.sizeprint(width is : str(width))print(height is : str(height))im im.convert(L) # pic -- mat 转换可以选择不同的模式下面有函数源码具体说明data im.getdata()data np.matrix(data,dtypefloat)/255.0new_data np.reshape(data * 255.0,(height,width))new_im Image.fromarray(new_data)# 显示从矩阵数据得到的图片new_im.show()return new_datadef MatrixToImage(data):data data*255new_im Image.fromarray(data.astype(np.uint8))return new_imconvert(self, modeNone, matrixNone, ditherNone, palette0, colors256)| Returns a converted copy of this image. For the P mode, this| method translates pixels through the palette. If mode is| omitted, a mode is chosen so that all information in the image| and the palette can be represented without a palette.|| The current version supports all possible conversions between| L, RGB and CMYK. The **matrix** argument only supports L| and RGB.|| When translating a color image to black and white (mode L),| the library uses the ITU-R 601-2 luma transform::|| L R * 299/1000 G * 587/1000 B * 114/1000|| The default method of converting a greyscale (L) or RGB| image into a bilevel (mode 1) image uses Floyd-Steinberg| dither to approximate the original image luminosity levels. If| dither is NONE, all non-zero values are set to 255 (white). To| use other thresholds, use the :py:meth:~PIL.Image.Image.point| method.|| :param mode: The requested mode. See: :ref:concept-modes.| :param matrix: An optional conversion matrix. If given, this| should be 4- or 12-tuple containing floating point values.| :param dither: Dithering method, used when converting from| mode RGB to P or from RGB or L to 1.| Available methods are NONE or FLOYDSTEINBERG (default).| :param palette: Palette to use when converting from mode RGB| to P. Available palettes are WEB or ADAPTIVE.| :param colors: Number of colors to use for the ADAPTIVE palette.| Defaults to 256.| :rtype: :py:class:~PIL.Image.Image| :returns: An :py:class:~PIL.Image.Image object.原图filepath ./imgs/imgdata ImageToMatrix(./imgs/0001.jpg)print(type(imgdata))print(imgdata.shape)plt.imshow(imgdata) # 显示图片plt.axis(off) # 不显示坐标轴plt.show()运行结果mpimg 函数import matplotlib.pyplot as plt # plt 用于显示图片import matplotlib.image as mpimg # mpimg 用于读取图片import numpy as npdef readPic(picname, filename):img mpimg.imread(picname)# 此时 img 就已经是一个 np.array 了可以对它进行任意处理weight,height,n img.shape #(512, 512, 3)print(the original pic: \n str(img))plt.imshow(img) # 显示图片plt.axis(off) # 不显示坐标轴plt.show()# 取reshape后的矩阵的第一维度数据即所需要的数据列表img_reshape img.reshape(1,weight*height*n)[0]print(the 1-d image data :\n str(img_reshape))# 截取(300300)区域的一小块(12*12*3)将该区域的图像数据转换为一维数组img_cov np.random.randint(1,2,(12,12,3)) # 这里使用np.ones()初始化数组会出现数组元素为float类型使用np.random.randint确保其为int型for j in range(12):for i in range(12):img_cov[i][j] img[300i][300j]img_reshape img_cov.reshape(1,12*12*3)[0]print((img_cov))print(img_reshape)# 打印该12*12*3区域的图像plt.imshow(img_cov)plt.axis(off)plt.show()# 写文件# open:以append方式打开文件如果没找到对应的文件则创建该名称的文件with open(filename, a) as f:f.write(str(img_reshape))return img_reshapeif __name__ __main__:picname ./imgs/0001.jpgreadPic(picname, data.py)读出的数据(12*12*3)每个像素点以R、G、B的顺序排列以及该区域显示为图片的效果以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。