Создать фрейм данных из данных изображений в R - PullRequest
0 голосов
/ 09 февраля 2019

Мне нужно создать фрейм данных из картинок, а именно разделить картинки по параметрам.Я использую когнитивную службу Azure

q <- "?returnFaceId=true&returnFaceLandmarks=true&returnFaceAttributes=age,gender,smile,headPose,facialHair,glasses,emotion"
url1 <- paste( q, sep="")


#path to my folder with pictures
pic1="C:/pictures" #here some pictures
library("httr")
#send the request to Face API
# my keys calls FaceRecognition
response = POST(url=url1, body=pic1, add_headers(.headers = 
c('Content-Type'='application/octet-stream', 'FaceRecognition'='12345...32')))

result <- content(response)
result
df <- as.data.frame(result)


# pivot the data frame...you need to add package reshape2 for this
library("reshape2")
df2 <- melt(df, id=c("faceId"))

Так что после того, как я получаю сообщение об ошибке

Error in curl::curl_fetch_memory(url, handle = handle) : <url> malformed

и

Error: id variables not found in data: faceId

Но я хочу получить фрейм данных, например enter image description here

и затем транспонировать фрейм данных следующим образом enter image description here

Как получить такой вывод

Примечание

Azureэто не панацея для меня, я взял это в качестве примера для практики, если вы знаете более простой способ получить желаемый результат, я буду вам очень благодарен.

1 Ответ

0 голосов
/ 09 февраля 2019

похоже, что вы вставляете одну строку.paste принимает несколько аргументов и объединяет их в один символьный объект, используя sep для их разделения.таким образом, url1 - это просто q, который, действительно, является неверно сформированным url, поскольку нет протокола (например, http://) или url (т.е. example.com/face-recognition-endpoint). Остальное является результатом этого.

попробуйте добавить URL в ваш оператор вставки, например,

base <- "https://northeurope.api.cognitive.microsoft.com/face/v1.0/identify"
q <- "?returnFaceId=true&returnFaceLandmarks=true&returnFaceAttributes=age,gender,smile,headPose,facialHair,glasses,emotion"
url1 <- paste(base, q, sep = "")

, тогда для команды POST вам нужно указать, что вы загружаете файл, и я предполагаю, что Azure хочет толькоодин файл за раз, так что вам нужно что-то вроде

pic1 <- "C:/pictures/pic1.jpeg"
response <- POST(url = url1, body = upload_file(pic1) ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...