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")
PIL库 image相关wen'ti
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 单通道放大电路的工作原理