Ошибка в upload_file (x): is.character (путь) не TRUE в цикле - PullRequest
0 голосов
/ 17 июня 2019

Я использую Microsoft Face API для обнаружения эмоций на лице.После проб и ошибок у меня есть следующий код, который работает для одного файла:

local <- "/mypath/image.jpg"

x_recognition <- function (x) {

  y = POST(Oxford,
           body = upload_file(x),
           add_headers(.headers = c("Content-Type"="application/octet-stream",
                                    "Ocp-Apim-Subscription-Key"=csAPI))
           )

      do.call(rbind,content(y)[[1]]$faceAttributes['emotion'])

}

x_recognition(local)

        anger contempt disgust fear happiness neutral sadness surprise
emotion 0     0        0       0    0         1       0       0       

Но моя цель - обработать несколько изображений, содержащихся в папке.Итак, я написал следующий код, но безуспешно:

Image_list <- list.files(path = "/mypath", pattern="*.jpg", full.names=TRUE)
append_list <- data.frame()

for (x in 1:length(Image_list)) {

  y = POST(Oxford,
           body = upload_file(x),
           add_headers(.headers = c("Content-Type"="application/octet-stream",
                                    "Ocp-Apim-Subscription-Key"=csAPI))
  )

  emotionID = do.call(rbind, content(y)[[1]]$faceAttributes['emotion'])

  append_list <- rbind(append_list, emotionID)

}

Приведенный выше код выдает следующую ошибку:

Error in upload_file(x) : is.character(path) is not TRUE

Я провел последний час или около того, пытаясь выяснить,решение.list.files не похоже на проблему.

> Image_List[1]
[1] "/mypath/image1.jpg"

>  Image_List
[1] "/mypath/image1.jpg"
[2] "/mypath/image2.jpg"
[3] "/mypath/image3.jpg"

Когда я пытаюсь запустить одно выбранное изображение, оно работает:

x_recognition(Image_List[1])
        anger contempt disgust fear happiness neutral sadness surprise
emotion 0     0        0       0    0         1       0       0       

Error in upload_file(x) : is.character(path) is not TRUE появляется только когда я пытаюсьпетля.Любая помощь будет оценена.

1 Ответ

1 голос
/ 20 июня 2019

В вашем цикле x - это число в диапазоне от 1 до length(image_list).Вы, вероятно, хотите image_list[x].

...