Создайте al oop, чтобы преобразовать несколько изображений в векторы и объединить их в фрейм данных - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужна ваша помощь и советы

Мне нужно разработать скрипт на R, который сохраняет векторы, полученные в результате преобразования нескольких изображений во фрейме данных, в котором будет столько строк, сколько изображений (1000) и столько столбцов, сколько переменных (4096). Фрейм данных будет экспортирован в CSV-файл.

Я попробовал все oop, чтобы он считывал изображения и преобразовывал их одно за другим, а затем объединял их в матрицу или фрейм данных. Я новичок в этом ... Я потерян ... Я делюсь с вами тем, что я пробовал. Любая идея или улучшение?

set.seed(1234)
mypath = "C:/dataset/dataset/effusion/" #file where the images are
files <- list.files(path=mypath, pattern=".png$")
length(files)

for (i in files){
 im <- readImage(mypath[i], header = FALSE)
 grises <- rgb_2gray(im[i])
 # Resize the image to a size of 64 x64 pixels:
 resiz = resizeImage(grises[i], width = 64, height = 64, method = 'nearest')
 # Convert to vector:
 im.convert <- as.vector(resiz[i])
 out <- as.data.frame(do.call(rbind, im.convert)) # create a data frame
     }
  return(out)

Большое спасибо!

1 Ответ

0 голосов
/ 08 апреля 2020

Есть несколько проблем с вашим кодом, и я предлагаю вам пересмотреть, как написать al oop (например, нет необходимости использовать return, если вы не находитесь в функции - также вы помещаете индекс i, где есть не нужно). Это должно работать, чтобы получить матрицу цифр c:

library(OpenImageR)
mypath = "C:/dataset/dataset/effusion/" #file where the images are
files = list.files(path=mypath, pattern=".png$", full.names = TRUE) # add full.names option to get full path
out = numeric()
for (f in files){
  im = readImage(f)
  grises = rgb_2gray(im)
  # Resize the image to a size of 64 x64 pixels:
  resiz = resizeImage(grises, width = 64, height = 64, method = 'nearest')
  # Convert to vector:
  out = rbind(out, as.vector(resiz))
}
out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...