如何在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
相关产品推荐
相关产品推荐

