英文:
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))
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论