英文:
The 'RGB_image' parameter must be a 3-dimensional array where the third dimension is equal to 3?
问题
library(abind)
library(OpenImageR)
此代码加载数据
path = list.files("../df", ".jpg", full.names = TRUE)
# 读取数据
imgs = lapply(path, readImage)
这将数据绑定为一个数组
comb <- do.call(abind, c(imgs, list(along = 3)))
上述代码的输出为6张图像的大小为480X640X18。
这段代码用于将图像转换为灰度,但它出现了错误
错误信息:
'RGB_image' 参数必须是三维的
df <- rgb_2gray(comb)
df <- rgb_2gray(comb)
英文:
library(abind)
library(OpenImageR)
This code load the data
path = list.files("../df",".jpg", full.names = T)
#read the data
imgs=lapply(path, readImage)
This binds the data as an array
comb <- do.call(abind,c(imgs,list(along =3)))
The output of the above is 480X640X18 for six images.
This code is to convert images to grayscale but it does not work it gives an error
the error:
> The 'RGB_image' parameter must be a 3-dimensional
df<-rgb_2gray(comb)
df<-rgb_2gray(comb)
答案1
得分: 0
以下是翻译好的部分:
少数要点:
rgb_2gray() 函数接受一个“第三维等于3的三维数组”,可以从文档中找到相关信息。因此,在使用 abind() 合并图像之前,您需要先将图像转换为灰度图像(例如使用 lapply)。
在使用 abind() 之前,图像必须具有相同的大小,您可以使用 resizeImage() 强制使它们具有相同的大小。
最后,您可以绘制图像,以查看是否获得了期望的结果。
library(abind)
library(OpenImageR)
# 设置正确的目录路径,对我来说路径包含了3个jpg图像
path <- list.files(".", ".jpg", full.names = TRUE)
# 读取数据
imgs <- lapply(path, readImage)
gray_imgs <- lapply(imgs, rgb_2gray)
gray_imgs <- lapply(gray_imgs, function(x) resizeImage(x, 256, 256))
comb <- do.call(abind, c(gray_imgs, list(along = 3)))
dim(comb)
# [1] 256 256 3
n <- dim(comb)[3]
# 显示图像
par(mfrow = c(1, n)) # 对我来说路径包含3个jpg图像,n = 3
for (i in 1:n) {
image(rotateImage(comb[, , i], 270), col = gray.colors(256))
}
英文:
Few points:
The function rgb_2gray() accepts a "3-dimensional array where the third dimension is equal to 3" from the documentation. Hence, you need to first convert the images to grayscale (e.g., with lapply) before you can use abind() to combine them.
Before you use abind(), the images must be of same size, to force it you can use resizeImage().
Finally, you can plot the images to see if you are obtaining the desired result.
library(abind)
library(OpenImageR)
# set the proper directory with setwd(), for me the path contained 3 jpg images
path <- list.files(".",".jpg", full.names = T)
#read the data
imgs <- lapply(path, readImage)
gray_imgs <- lapply(imgs, rgb_2gray)
gray_imgs <- lapply(gray_imgs, function(x) resizeImage(x, 256, 256))
comb <- do.call(abind,c(gray_imgs,list(along =3)))
dim(comb)
# [1] 256 256 3
n <- dim(comb)[3]
# display the images
par(mfrow = c(1, n)) # for me the path contained 3 jpg images, n = 3
for (i in 1:n) {
image(rotateImage(comb[, , i], 270), col=gray.colors(256))
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。



评论