You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的magick包中读取图像后获取并修改像素值数组

用magick包操作图像像素值的方法

magick包通过image_read()读取的是专用图像对象,无法直接像3D数组那样索引,需要先将其转换为像素数组再操作,步骤如下:

1. 获取像素数据数组

使用image_data()函数将图像对象转换为多维数组,默认返回0-255的整数型数据,也可指定type="float"获取0-1的浮点型数据:

library(magick)
# 读取示例图像
img <- image_read(system.file("images", "sample-color.png", package="EBImage"))

# 转换为整数型像素数组(通道数 × 宽度 × 高度)
pixel_arr <- image_data(img, "integer")
# 查看数组维度
dim(pixel_arr)

2. 提取指定区域像素值

数组维度顺序为通道数 → 宽度 → 高度,提取左上角10×10区域的第一个通道(RGB图像中为红色通道):

# 提取目标区域像素值
red_area <- pixel_arr[1, 1:10, 1:10]

3. 修改指定区域像素值

直接修改数组对应位置的值,再将数组转回图像对象:

# 将左上角10×10区域的红色通道像素值设为0
pixel_arr[1, 1:10, 1:10] <- 0

# 将修改后的数组转回magick图像对象
modified_img <- image_read(pixel_arr)

# 查看修改后的图像
modified_img

注意:如果是灰度图像,数组的通道数为1,操作逻辑完全一致,只需将通道索引设为1即可。

内容的提问来源于stack exchange,提问作者mri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:31:04