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

R中裁剪cimg类图像时报错img.crop未找到该如何解决

R语言cimg类图像裁剪报错解决方案

报错原因

你当前使用的crop.image不支持imager包加载得到的cimg类对象,函数内部调用的img.crop变量无法生成,因此抛出缺失对象错误。无需强制转换为array类,优先使用imager原生裁剪函数兼容性更好,操作更简单。

方法1:直接用imager包自带crop函数(推荐,无需转类)

该方法直接操作cimg对象,不用修改数据格式,语法示例如下:

library(imager)
# 加载图像,得到cimg类对象
img <- load.image('C:/image/17.jpg')
# crop参数说明:xy = c(x起点, y起点, 裁剪宽度, 裁剪高度)
# 示例对应裁剪x从203到446、y从7到256的区域,可按需调整参数
img22 <- crop(img, xy = c(203, 7, 243, 249))
# 绘图对比
par(mfrow = c(1,2))
plot(img, main = "Original")
plot(img22, main = "Cropped")
# 裁剪后仍为cimg类,可直接用于后续imager相关操作
class(img22)

方法2:如需继续使用crop.image,可转换为array类

如果业务逻辑要求必须用原有crop.image函数,再按以下步骤转换cimg为适配的array格式:

  • cimg底层本身是数组结构,用as.array()即可转换
  • 注意多数图像操作包要求array维度为(高度, 宽度, 通道),需要调整cimg默认的维度顺序
    代码示例:
# 转换为array并调整维度顺序适配crop.image
img_array <- aperm(as.array(img), c(2,1,4))
# 调用crop.image,注意调整坐标为有效区间
img22 <- crop.image(img_array ,xleft=203, ybottom=7, xright=446, ytop=256)

原代码注意事项

  • 代码中print(k)的变量k未提前定义,运行时会单独报错,建议先删除该行或提前给k赋值
  • 你填写的裁剪坐标xleft=446大于xright=203,属于无效区间,调整坐标时要保证左边界小于右边界,下边界小于上边界

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 21:06:08