使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用。

下面使用两种方法进行处理:

convert 函数

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

def ImageToMatrix(filename):

im = Image.open(filename) # 读取图片

im.show() # 显示图片

width,height = im.size

print("width is :" + str(width))

print("height is :" + str(height))

im = im.convert("L") # pic --> mat 转换,可以选择不同的模式,下面有函数源码具体说明

data = im.getdata()

data = np.matrix(data,dtype='float')/255.0

new_data = np.reshape(data * 255.0,(height,width))

new_im = Image.fromarray(new_data)

# 显示从矩阵数据得到的图片

new_im.show()

return new_data

def MatrixToImage(data):

data = data*255

new_im = Image.fromarray(data.astype(np.uint8))

return new_im

'''

convert(self, mode=None, matrix=None, dither=None, palette=0, colors=256)

| 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 np

def 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))

# 截取(300,300)区域的一小块(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[300+i][300+j]

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_reshape

if __name__ == '__main__':

picname = './imgs/0001.jpg'

readPic(picname, "data.py")

读出的数据(12*12*3),每个像素点以R、G、B的顺序排列,以及该区域显示为图片的效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python显示图片列表_python读取图片任意范围区域相关推荐

  1. python读取图片格式_Python读取图片尺寸、图片格式

    Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...

  2. Python opencv 库cv.imread()读取图片为空None,cv.imshow()报错:error: (-215:Assertion failed) _src.empty() in ..

    报错原因: cv.imread()读取图片为空None,原因很大可能是路径有问题,要么是在路径下找不到图片,要么就是路径中包含有中文(特别要注意是不是路径含有中文):图片读取为空从而导致了在显示图片时 ...

  3. 用python字符画生日快乐_Python:图片转字符画(~情人节神器~)

    字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像素是有颜色深浅的,我们如何将带有不同颜色的像素编码为对应的字符呢? 转化方法: 将彩色图片转化为灰度图 根据颜色深浅的RGB值(值 ...

  4. pil获得图片_OpenCV读取图片与PIL读取图片的差别

    读取图片函数: cv2.imread() Image.open() 注意:Image.open()函数只是保持了图像被读取的状态,但是图像的真实数据并未被读取,因此如果对需要操作图像每个元素,如输出某 ...

  5. python区域找图命令_python读取图片任意范围区域

    使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...

  6. python三维矩阵出图_python读取图片的方式,以及将图片以三维数组的形式输出方法...

    python 三维npy数组如何画成三维图片 画成三维图片? 你要是想要看空间分布的话画散点图就可以啊,用matplotlib 网页链接 要是那种各种弯曲的面,也是matplotlib 网页链接 再就 ...

  7. python图片保存_python读取和保存图片5种方法对比

    python读取和保存图片5种方法对比 python中对象之间的赋值是按引用传递的,如果需要拷贝对象,需要用到标准库中的copy模块 方法一:利用 PIL 中的 Image 函数 这个函数读取出来不是 ...

  8. python读取多张图片_python读取图片的几种方式及图像宽和高的存储顺序

    python读取图片的几种方式及图像宽和高的存储顺序 1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8 import cv2 import ...

  9. python怎么编辑图片_python读取图片并修改格式与大小的方法

    本文实例为大家分享了python读取图片并修改文件大小的具体代码,供大家参考,具体内容如下 # Author:NDK # -*- coding:utf-8 -*- from PIL import Im ...

最新文章

  1. T-SQL查询进阶--基于列的逻辑表达式
  2. Ubuntu安装搜狗输入法Linux版
  3. 【项目实战课】基于Pytorch的3DCNN视频分类与行为识别实战
  4. Java基础之Calendar应用:每周三、六休息,从某个日期起至今休息多少天?
  5. C++ 关键字 (try-finally) 收藏
  6. Servlet3.0下配置Servlet
  7. 如何用Python从数据库里面获取数据?4个步骤就能轻松实现
  8. mysql更新数据 update格式和alter对比
  9. SpringBoot入门之内嵌Tomcat配置
  10. R语言实现混频数据分析实例----midas回归预测
  11. Java8中的 Stream 那么彪悍,你知道它的原理是什么吗?
  12. python语言程序设计实践教程答案实验六_实验6数组程序设计答案
  13. 尚学堂马士兵Linux视频教程笔记
  14. java opencv 人脸相似度,opencv 比较两张图的相似度
  15. java 读取psd,寻找Java库以使用PSD格式
  16. Javascript多功能计算器
  17. 【Tomcat】一分钟教你eclipse如何配置tomcat(二)
  18. 微信小程序:认证注册微信小程序之后,正确登录微信小程序后台管理
  19. SayLove表白墙微信小程序
  20. Binder之AIDL进程间通信的使用(附源码)

热门文章

  1. python 加权随机算法_python中的加权随机样本
  2. 菜鸟教程 之 JavaScript 实例
  3. android德州扑克计算器,学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum...
  4. mysql 5.7安装完密码是多少_关于mysql5.7.18的安装并修改初始密码的图文教程
  5. php mysql 字段不为空_Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?...
  6. JavaScript自执行匿名函数
  7. 现代程序设计 作业9 - 综合练习
  8. 现代软件工程讲义 0 课程概述
  9. oracle merge 效率慢,更新语句的效率比较(merge into )
  10. mysql的搜索效率_Mysql模糊查询like效率,以及更高效的写法