Я работаю с пакетами OpenImageR и SuperpixelImageSegmentation в R. Я хотел извлечь измерение Green сегментированного изображения, в результате получилось двухмерное изображение вместо 3 (оттенки серого).
поэтому для его раскрашивания я установил значения красного и синего цветного изображения равны 0.
Однако всякий раз, когда я пытаюсь показать изображение, я получаю следующую ошибку, и я не могу понять, почему 0 интерпретируется как NAN, я также пытался установить его на значение, которое больше нуля (0,01), и я все еще получаю то же сообщение:
Error in rgb(t(x[, , 1L]), t(x[, , 2L]), t(x[, , 3L]), maxColorValue = max) :
color intensity nan, not in [0,1]
вот мой код:
library(SuperpixelImageSegmentation)
library(OpenImageR)
path = system.file("tmp_images", "Phen.jpg", package = "OpenImageR")
image = readImage(path)
init = Image_Segmentation$new()
segmentation = init$spixel_segmentation(input_image = image,
superpixel = 2000, # k
AP_data = TRUE,
use_median = TRUE,
sim_wA = 5,
sim_wB = 5,
sim_color_radius = 3,
kmeans_method = "kmeans",
kmeans_initializer = "kmeans++",
kmeans_num_init = 5,
kmeans_max_iters = 50,
verbose = TRUE)
#getting the green part alone
imG = segmentation$AP_image_data
imG = imG[,,2]
imB = segmentation$AP_image_data
imB = imB[,,3]
imR = segmentation$AP_image_data
imR = imR[,,1]
imR4 = imR / 2
imB4 = imB / 2
imGDone = imG - imR4
imGDone = imGDone - imB4
imageShow(imGDone) # works fine, the result is a mask that contains only the green concentrated areas
imGColor <- segmentation$AP_image_data
for (i in 1:nrow(imGDone)) {
for (j in 1:ncol(imGDone)){
if (imGColor[i,j,1] > 0) {
imGColor[i,j,1] = 0 * imGDone[i,j] # setting red to zero
imGColor[i,j,3] = 0 * imGDone[i,j] # setting blue to zero
imGColor[i,j,2] = 1 * imGDone[i,j] # setting green
}
}
}
imageShow(imGColor)
, когда я выполняю последнюю строку для отображения Я получаю ошибку. Я новичок в R, и я не могу найти никаких указаний на то, что может быть причиной этого. и поэтому я хотел бы помочь с тем, что я должен сделать, и заранее большое спасибо!