Python 实现Image和Ndarray互相转换

如下所示:

import numpy as np
from PIL import Image

img = Image.open(filepath)
img_convert_ndarray = np.array(img)
ndarray_convert_img= Image.fromarray(img_convert_ndarray )

# np.array(object) 这个函数很强大啊,看源码里面给的注释
# object : array_like
#      An array, any object exposing the array interface, an object whose
#      __array__ method returns an array, or any (nested) sequence.

而keras里面也有api来做这样的转换

from keras.preprocessing.image import img_to_array, array_to_img

然而查看源码的时候,其实会发现这两个函数仍然还是用同样的方式实现

img_to_array() 是使用np.asarray(),而array_to_img是使用Image.fromarray()

多说一句,np.array()是创建一个ndarray,而np.asarray(object)是将一个object转换成ndarray,但是

np.asarray(a):
  return np.array(a,copy=False)

# 而np.array()里copy默认为True,那这有什么区别呢?
import numpy as np

  a = np.array([1, 2])
  b = np.asarray(a)
  c = np.asarray(a)
  print(type(b), type(c), b is c) # True
  e = np.array(a)
  f = np.array(a)
  print(type(e), type(f), e is f) # False

  a = [1, 2]
  b = np.asarray(a)
  c = np.asarray(a)
  print(type(b), type(c), b is c) # False
  e = np.array(a)
  f = np.array(a)
  print(type(e), type(f), e is f) # False

以上这篇Python 实现Image和Ndarray互相转换就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python图片转换成矩阵,矩阵数据转换成图片的实例

    如下所示: # coding=gbk from PIL import Image import numpy as np # import scipy def loadImage(): # 读取图片 im = Image.open("lena.jpg") # 显示图片 im.show() im = im.convert("L") data = im.getdata() data = np.matrix(data) # print data # 变换成512*512 d

  • Python生态圈图像格式转换问题(推荐)

    在Python生态圈里,最常用的图像库是PIL--尽管已经被后来的pillow取代,但因为pillow的API几乎完全继承了PIL,所以大家还是约定俗成地称其为PIL.除PIL之外,越来越多的程序员习惯使用openCV来处理图像.另外,在GUI库中,也有各自定义的图像处理机制,比如wxPyton,定义了wx.Image做为图像处理类,定义了wx.Bitmap做为图像显示类. 下图梳理出了PIL读写图像文件.cv2读写图像文件.PIL对象和cv2对象互转.PIL对象和wx.Image对象互转.以及

  • Python实现字符串与数组相互转换功能示例

    本文实例讲述了Python实现字符串与数组相互转换功能.分享给大家供大家参考,具体如下: 字符串转数组 str = '1,2,3' arr = str.split(',') print a 运行结果: 数组转字符串 #方法1 arr = ['a','b'] str1 = ','.join(arr) print str1 #方法2 arr = [1,2,3] #str = ','.join(str(i) for i in arr)#此处str命名与str函数冲突! str2 = ','.join(

  • Python图像灰度变换及图像数组操作

    使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量.矩阵.图像等)以及线性代数函数. 数组对象可以实现数组中重要的操作,比如矩阵乘积.转置.解方程系统.向量乘积和归一化.这为图像变形.对变化进行建模.图像分类.图像聚类等提供了基础. 在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法将图像转换成NumPy的数组对象

  • Python 实现Image和Ndarray互相转换

    如下所示: import numpy as np from PIL import Image img = Image.open(filepath) img_convert_ndarray = np.array(img) ndarray_convert_img= Image.fromarray(img_convert_ndarray ) # np.array(object) 这个函数很强大啊,看源码里面给的注释 # object : array_like # An array, any objec

  • NDArray 与 numpy.ndarray 互相转换方式

    目录 NDArray与numpy.ndarray互相转换 NumPy与ndarray简介 NumPy简介 数组ndarray NDArray与numpy.ndarray互相转换 import numpy as np from mxnet import nd # numpy.ndarray 变 mx.NDArray np_val = np.array([1, 2, 3]) # 定义一个numpy.ndarray nd_val = nd.array(np_val) # 深复制 # NDArray 变

  • python妙用之编码的转换详解

    前言 记得刚入门那个时候,自己处理编码转换问题往往是"百度:url解码.base64加密.hex--",或者是使用一款叫做"小葵多功能转换工具"的软件,再后来直接上Burpsuite的decoder功能,感觉用的还挺好的.不过,也遇到些问题:在线转换效率低(搜索占去了2/3的时间).两款工具存在一些小问题,比如burp中涉及中文往往显示乱码. 直到使用python来作为我日常编码转换工具-- 开启py转换之旅 url编码 url编码是一种浏览器用来打包表单输入的格式

  • python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"转换为中文,实际上这是unicode的中文编码.可用以下方法转换: 1. >>> s = u'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8' >>> print s 人生苦短,

  • python使用PythonMagick将jpg图片转换成ico图片的方法

    本文实例讲述了python使用PythonMagick将jpg图片转换成ico图片的方法.分享给大家供大家参考.具体分析如下: 这里使用到了PythonMagick模块,关于PythonMagick模块和ImageMagick的详细信息请参考:http://www.imagemagick.org/. 下面这段代码可以讲jpg图片转换成ico图标格式. # -*- coding: utf-8 -*- import PythonMagick img = PythonMagick.Image("c:/

  • python 列表,数组,矩阵两两转换tolist()的实例

    通过代码熟悉过程: # -*- coding: utf-8 -*- from numpy import * a1 =[[1,2,3],[4,5,6]] #列表 print('a1 :',a1) #('a1 :', [[1, 2, 3], [4, 5, 6]]) a2 = array(a1) #列表 -----> 数组 print('a2 :',a2) #('a2 :', array([[1, 2, 3],[4, 5, 6]])) a3 = mat(a1) #列表 ----> 矩阵 print(

  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

  • python字符串与url编码的转换实例

    主要应用的场景 爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet_name) print url_code_name #输出 #%E6%9D%8E%E7%99%BD 2.url编码转为字符串 import urllib url_code_name = "%E6%9D%8E%E7%99%BD" name = urllib.unquote(

  • Python实现点阵字体读取与转换的方法

    点阵字体是指根据文字的像素点来显示的字体,效果如下: 使用Python读取并显示的过程如下: 根据中文字符获取GB2312编码 通过GB2312编码计算该汉字在点阵字库中的区位和码位 通过区位和码位计算在点阵字库中的偏移量 基于偏移量获取该汉字的32个像素存储字节 解析像素字节获取点阵坐标信息 在对应的坐标显示信息位.如该像素点是否显示点亮 使用该代码前提:下载点阵字体库到本地,这里默认使用的是hzk16点阵字库 代码如下: #!/usr/bin/python #encoding: utf-8

  • Python中 CSV格式清洗与转换的实例代码

    题目: CSV格式清洗与转换 描述 附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ (1)按行进行倒序排列:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

随机推荐