buyter 2019-12-08 14:37 采纳率: 0%
浏览 108

PIL库 image相关wen'ti

import numpy as np
from PIL import Image

#此出在array函数里放入的参数不应该是列表或者元组吗?经过打印,发现Image.open的返回值,并不是,为什么可以直接丢入作为参数呢?
a=np.array(Image.open(r"C:\Users\21977\Desktop\QQ.jpg")) 

print(a)

#a与[255,255,255]的维度都不一致,请问是怎样减得呢?
a=[255,255,255]-a         

im=Image.fromarray(a.astype("uint8"))
im.save(r"C:\Users\21977\Desktop\newQQ.jpg")
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-28 23:17
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    numpy.array() 函数将图像数据转换为 NumPy 数组。如果你想要从图像中提取一个特定的颜色通道(例如,R、G 或 B),你可以在数组上应用这些颜色通道。

    在这个例子中,np.array() 函数接收了一个 Image 对象作为输入。然而,这个对象并不是一个标准的 NumPy 数组,因为它没有一个 data 属性来存储像素数据。相反,Image 对象使用一种称为 "RGB" 的颜色空间来表示图像中的每个像素。

    当你尝试直接将一个 Image 对象放入 np.array() 函数时,实际上是在尝试将其转换回原始的 RGB 数据格式。然而,这并不总是可行的,尤其是在处理非常大的图像或具有大量透明区域的情况下。

    为了从图像中提取单个颜色通道,你可以首先打开图像并读取其像素数据,然后将这些数据转换为 NumPy 数组。这是一个示例:

    # 打开图像文件
    img = Image.open('C:\\Users\\21977\\Desktop\\QQ.jpg')
    
    # 获取图像的宽度和高度
    width, height = img.size
    
    # 创建一个 NumPy 数组来存储像素数据
    pixels = np.zeros((height, width), dtype='uint8')
    
    # 通过逐像素遍历的方式填充 NumPy 数组
    for y in range(height):
        for x in range(width):
            r, g, b = img.getpixel((x, y))
            pixels[y, x] = [r, g, b]
    
    # 将 NumPy 数组转换为 RGB 形式
    rgb_pixels = pixels[:, :, :3]
    

    现在,rgb_pixels 是一个形状为 (height, width) 的 NumPy 数组,其中每个元素都是一个包含 R、G 和 B 值的元组。这样,你可以很容易地从中选择任何特定的颜色通道了。

    评论

报告相同问题?

悬赏问题

  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理