首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将numpy图像转换为PIL图像会产生奇怪的结果

将numpy图像转换为PIL图像可能会产生奇怪的结果。这是因为PIL和numpy在处理图像时使用了不同的像素表示方法。PIL使用的是常见的RGB顺序,每个像素由红色、绿色和蓝色三个通道的值组成。而numpy通常使用的是BGR顺序,每个像素由蓝色、绿色和红色三个通道的值组成。因此,如果直接使用PIL库的fromarray方法将numpy图像转换为PIL图像,颜色通道的顺序会发生混淆,导致图像呈现奇怪的颜色。

为了解决这个问题,可以通过调整通道顺序来正确地将numpy图像转换为PIL图像。下面是一种常见的方法:

代码语言:txt
复制
import numpy as np
from PIL import Image

# 假设numpy图像的变量名为numpy_image
# 假设numpy图像的数据类型为uint8,范围在0-255之间

# 将BGR顺序的numpy图像转换为RGB顺序
rgb_image = cv2.cvtColor(numpy_image, cv2.COLOR_BGR2RGB)

# 创建PIL图像对象
pil_image = Image.fromarray(rgb_image)

通过调用cv2库的cvtColor方法,将BGR顺序的numpy图像转换为RGB顺序的numpy图像。然后,使用Image.fromarray方法将numpy图像转换为PIL图像对象。

这样处理后,转换的结果将与原始图像保持一致,不再产生奇怪的颜色。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python - matplotlib图像换为numpy.array 或 PIL.Image

最近遇到了需要获取plt图像数据需求,本文记录了matplotlib图像换为numpy.array 或 PIL.Image方法。...众所周知,这个库处理图像会出现内存泄漏问题,原想着plt图转出来用opencv存就好了,然而并没有,牢骚完毕。...转换思路 总体分为两步完成目标: plt或fig对象转为argb string对象 argb string对象图像转为array 或 Image 步骤一 区分对象为plt和fig情况,具体使用哪种根据对象类型确定...(), dtype=np.uint8) 步骤二 转换argb string编码对象为PIL.Image或numpy.array图像 此时argb string不是我们常见uint8 w h rgb...Image RGBA图像对象 (需要Image对象同学到此为止就可以了) image = Image.frombytes("RGBA", (w, h), buf.tostring()) # 转换为numpy

1.7K10
  • OpenCV-Python学习教程.5

    默认输出图像 print(type(im)) print(im) 可以看到虽然我们没有吧numpy库放进来,但是内部实现就是这样 使用了numpy多维数组 from PIL import Image.../PIL/img/1.jpg').convert('L')) # 这里就是一个灰度图像 # 新建一个图像 figure() # 不适用颜色信息 gray() # 在原点左上角显示轮廓图像...from numpy import array from pylab import * vscode是很”smart“,对于我一些函数操作,自动将相关库引入。...所以呢~为了支持所有的使用情形,matplotlib能够产生不同输出,而把每一个不同输出能力叫做一个后端。...*im+100 # 图像像素变换到100,200之间 im4 = 255.0*(im/255.0)**2 # 对图像像素值求平方后得到图像 print(int(im3.min())), int(im3

    99420

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

    使用python以及numpy通过直接操作图像数组完成一系列基本图像处理numpy简介:NumPy是一个非常有名 Python 科学计算工具包,其中包含了大量有用工具,比如数组对象(用来表示向量、...数组对象可以实现数组中重要操作,比如矩阵乘积、置、解方程系统、向量乘积和归一化。这为图像变形、对变化进行建模、图像分类、图像聚类等提供了基础。...在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法图像转换成NumPy数组对象。NumPy数组对象是多维,可以用来表示向量、矩阵和图像。...]运行结果:(600, 500) float32 110.0额外参数‘f'数组数据类型转为浮点数由于灰度图没有颜色信息,所以形状元组只有两个数值*array()变换相反操作可以使用PILfromarray...可以通过下面几种方法,图像换为灰度:1.浮点算法:Gray=R*0.3+G*0.59+B*0.112.整数方法:Gray=(R*30+G*59+B*11)/1003.移位方法:Gray =(R*76

    3.5K20

    【干货】计算机视觉实战系列01——用Python做图像处理

    图像换为灰度图像: 我们使用convert()方法来实现图像灰度转化 Convert()函数根据传入参数不同图片变成不同模式,通过相关资料我们知道PIL中有九种不同模式。...在PIL中,从模式“RGB”转换为“F”模式是按照下面的公式转换: F = R * 299/1000+ G * 587/1000 + B * 114/1000 我们以灰度图像为例,目标图像转换成灰度图像...在显示灰度图像时array()方法图像转换成NumPy数组对象,图片得以显示,否则会出现AttributeError错误。...▌转换图像格式: 通过save()方法,PIL可以图像保存成多种格式文件,当传入不同扩展名时,它会根据扩展名自动转换图像格式。...PIL是个足够智能类库,可以根据文件扩展名来判定图像格式PIL函数进行简单检查,如果文件名不是JPEG格式,自动将其转为JPEG格式,如果转换失败,则会报错。

    2.9K121

    python---PIL图像处理

    这里主要说PILPIL(Python Image Library)是python第三方图像处理库,但是由于其强大功能与众多使用人数,几乎已经被认为是python官方图像处理库了。...图片转换为灰度值图像用convert函数: 代码: from PIL import Image image = Image.open('lufei.png') m = image.convert('...) im_point.show() 小应用: 利用python做一个图像字符串,并保存到文本之中。...首先导入PIL库和numpy库 读取图片,并将图片重新调整大小,接着转换为矩阵,转换为矩阵时候, 矩阵是一个(x,y,z)数据,x和y是他长和宽,然后z是他rgb数值,0就是r,1就是g,2就是...然后定义一个数值转换为字符字符表备用 接着做一个转换函数,按一定比例,一定rgb数据转为特定字符,接着再利用之前获取到矩阵长度和宽度,获取矩阵像素rgb数据,传给转换函数C,再将获得到字符串写入文本文件即可

    2.1K20

    Keras预训练ImageNet模型实现分类操作

    ''' 1、加载图像,load_img 2、图像PIL格式转换为Numpy格式,image_to_array 3、图像形成批次,Numpyexpand_dims ''' # 以PIL格式加载图像...(original) plt.show() # 输入图像PIL格式转换为Numpy格式 # In PIL-- 图像为(width, height, channel) # In Numpy——图像为(...() print('numpy array size', numpy_image.size) # 图像/图像换为批量格式 # expand_dims将为特定轴上数据添加额外维度 # 网络输入矩阵具有形式...# 平均值是通过从ImageNet获得所有图像R,G,B像素平均值获得三个元素阵列 # 获得每个类发生概率 # 概率转换为人类可读标签 # VGG16 网络模型 # 对输入到VGG模型图像进行预处理...# 加载图像PIL格式 original = load_img(filename, target_size=(299, 299)) # PIL格式图像换为Numpy数组 numpy_image

    1.4K21

    如何使用Python图像换为NumPy数组并将其保存到CSV文件?

    在本教程中,我们向您展示如何使用 Python 图像换为 NumPy 数组并将其保存到 CSV 文件。...在本文下一节中,我们介绍使用 Pillow 库图像换为 NumPy 数组所需步骤。所以,让我们潜入! 如何图像换为 NumPy 数组并使用 Python 将其保存到 CSV 文件?...在我们深入研究图像换为 NumPy 数组并将其保存到 CSV 文件过程之前,让我们首先了解我们将在本教程中使用两个库:Pillow 和 NumPy。...图像换为数字派数组 考虑以下代码图像换为 Numpy 数组: # Import necessary libraries import csv from PIL import Image import...CSV库用于读取和写入CSV文件,而PIL库用于打开和操作图像NumPy库用于图像换为NumPy数组。

    42130

    【干货】计算机视觉实战系列04——用Python做图像处理

    图像缩放、均匀操作和直方图均衡化 上一讲我们已经介绍了Numpy一些基本函数和一些简单用法,这一讲我们继续学习使用Numpy库对图像进行更深入且更加有趣操作。...因此我们使用如下代码实现图像缩放: from PIL import Image from numpy import * from pylab import * def imresize(im, sz...: 这其中,我们定义了一个imresize()函数,使用PIL对象重新定义图像数组大小,其中,fromarray()方法进行反相操作,uint8:将其他数据类型转换为uint8 ▌图像均匀 图像均匀操作是减少图像噪声一种简单方式...对[0,1]区间内任一个r至进行如下变换: 我们令从s到r反变换为: r概率密度为 ,s概率密度为: 我们令变换函数为: 该函数就称为r累积分布函数,对式中r求导有: 把结果带入前式: 由此可见...,变换后变量s在其定义域内概率密度是均匀分布,用r累积分布函数做变换函数,可以产生一幅灰度级分布具有均匀概率密度图像,这个结果扩展了像素取值动态范围。

    2.2K70

    机器学习-09-图像处理02-PIL+numpy+OpenCV实践

    PIL模块读取图像数据不能直接与整型、浮点型等数据类型进行运算,我们可以通过array()方法图像数据转换成Numpy数组对象,之后利用Numpy执行任意数学操作,完成一些复杂图像处理流程。...# 灰度转换 # 我们还可以使用 NumPy 图像换为灰度图像。通过取图像RGB值加权平均值,我们可以执行此操作。...图像换为灰度图像。...numpy.fft.ifftshift() :fftshift逆函数,低频信息由中心移到左上角 iimg = np.abs(逆傅里叶变换结果) : 逆傅里叶变换结果不能直接显示为图像,需要变为灰度值...低通滤波模糊一幅图像(丢失边缘),高通滤波增强尖锐细节,图像边缘会被保留,细节会丢失掉。但是导致图像对比度降低。

    40720

    用Python帮你上马,哪里无码打哪里

    目录 0 引言 1 环境 2 需求分析 3 代码实现 4 代码全景展示 5 后记 0 引言 所谓像素图,就是对图像做一个颗粒化效果,使其产生一种妙不可言朦胧感。...这里我们使用Numpy库和PIL库来实现这个需求,后者用来图像读取与保存,涉及到所有图像处理动作均借助Numpy来实现。 有关NumPy模块、PIL模块介绍,可参考如下。...,并由 PIL image 转换为 NumPy arrayim1 = np.array(Image.open("P:\\Personal\\LuoShen.jpg"))# 遍历所要处理范围内所有坐标(...,对所选范围块RGB进行重新赋值im1[y:y + pixel, x:x + pixel] = im1[y + (pixel //2)][x + (pixel //2)]# NumPy array...转换为 PIL image        im2 = Image.fromarray(im1.astype(np.uint8))# 展示处理后图像im2.show()if__name__ =='__main

    48930

    人工智能视觉:基于OpenCV的人脸识别技术深度解析

    直接调用 imshow()函数图像确实显示,但随即消失。要保证图片一直在窗口上显示,要通过 waitKey()函数。...以前学过,在显微镜下没有两片看起来很像雪花。幸运是,作者生长在加拿大,已经学会如何不用显微镜来识别雪花。 因此,提取出图像细节对产生稳定分类结果和跟踪结果很有用。...使用 OpenCV 进行人脸检测 静态图像中人脸检测 人脸检测首先是加载图像并检测人脸,这也是最基本一步。为了使所得到结果有意义,可在原始图像的人脸周围绘制矩形框。...# 图像换为数组 img_numpy = np.array(PIL_img, 'uint8') faces = face_detector.detectMultiScale...基于 LBPH 的人脸识别 LBPH(Local Binary Pattern Histogram)检测到的人脸分为小单元,并将其与模型中对应单元进行比较,对每个区域匹配值产生一个直方图。

    1.6K01

    python计算机视觉编程——第一章(基

    ,存放测试**.jpg图像,源代码证添加了部分代码以便获取图像文件名保存下来,同时所有的图像转化为.png格式,运行程序后结果如下: ?...1.3.1 图像数组表示 在前面图像示例中,我们图像用array()函数转为NumPy数组对象,但是并没有提到它表示含义。...一兆像素图像具有百万维。由于图像具有很高维数,在许多计算机视觉应用中,我们经常使用降维操作。PCA 产生投影矩阵可以被视为原始坐标变换到现有的坐标系,坐标系中各个坐标按照重要性递减排列。...你也可以使用 arange() 函数来返回一个数组,或者使用 xrange() 函数返回一个产生器(可能提升速度)。我们在本书中贯穿使用range() 函数。...如果数据中不包含复杂数据结构,比如在一幅图像上点击点列表,NumPy 读写函数很有用。

    2.5K10

    【技术分享】Python Opencv图像处理基础(下)

    (binary)) 自适应局部阈值法,听起来挺好,但是在实际使用时候,其实也不是那么好,上面的代码结果如下: 可以看到,在边缘会有很多噪点。...5.2 大津阈值法 根据双峰图像图像直方图自动计算阈值(大津阈值法这个名字有点奇怪)。...图像运算与二值运算 ---- 要让灰度图像变暗,只要让每个像素值减少即可,例如直接像素值减半。...而图像旋转就有点复杂了,有两种方式,一种是直接使用numpy方法: np.rot90(m, k=1, axes=(0, 1)) 参数k就是旋转90度次数,k=1就是旋转了90度,k=2就是旋转了...赋值为255和赋值为(255,255,255)效果是一样numpy自动255广播成(255,255,255),关于numpy广播机制可以看这里https://www.numpy.org.cn/

    1.2K30
    领券