это первый раз, когда я пытаюсь построить функцию с использованием R. В основном, мои намеченные цели заключаются в следующем.
- Связь с Google Cloud Vision API с помощью пакета RoogleVision
- Функция просматривает изображения в каталоге
- Получение требуемой информации из функций Google Vision для каждого изображения
- Сохраните их в одном наборе агрегированных данных
Ниже приведен пример кода, который я использую. Я думаю, что единственная часть, которую я испытываю, - это «итерация» по изображениям и непрерывное создание набора данных.
Любая помощь и советы приветствуются!
Заранее спасибо!
googlevision <- function(path) {
path <- dirname(file.choose()) # Get directory
setwd(path)
pic_list <- list.files(path = path, pattern = "*.png") # Get filename lists
vision_data <- NULL
for (i in pic_list) {
text <- getGoogleVisionResponse(i, feature = "TEXT_DETECTION")
text_lang <- text[[1]][1]
ad_text <- paste(text[[2]][2:as.numeric(length(text[[2]])-20)], sep = " ", collapse = " ")
vision_data <- bind_rows(c("text_lang" = text[[1]][1],
"ad_text" = paste(text[[2]][2:as.numeric(length(text[[2]])-20)], sep = " ", collapse = " ")))
if(colnames(getGoogleVisionResponse(i, feature = "FACE_DETECTION"))[1] != "error"){
face <- getGoogleVisionResponse(i, feature = "FACE_DETECTION")
face_conf <- face$detectionConfidence
joy <- face$joyLikelihood
sorrow <- face$sorrowLikelihood
anger <- face$angerLikelihood
surprise <- face$surpriseLikelihood
underExposed <- face$underExposedLikelihood
blur <- face$blurredLikelihood
headwear <- face$headwearLikelihood
}
if(colnames(getGoogleVisionResponse(i, feature = "LABEL_DETECTION"))[1] != "error"){
label <- getGoogleVisionResponse(i, feature = "LABEL_DETECTION")
label_desc <- label$description
label_score <- label$score
}
visual_data <- bind_rows(c("face_conf" = face_conf,
"joy" = joy,
"sorrow" = sorrow,
"anger" = anger, "surprise" = surprise, "underExposed" = underExposed,
"blur" = blur, "headwear" = headwear, "text_lang" = text_lang, "ad_text" = ad_text))
}