Я создаю проект DeepLens для распознавания людей, когда камера сканирует одну из выбранных групп людей.
В проекте используется лямбда, которая обрабатывает изображения и запускает «rekognition» aws api.
На лямбда-консоли AWS (с версией 1.8.9 boto) при попытке вызвать API-интерфейс Python AWS возникает следующая проблема:
Примечание: img_str это байтовый массив
img_str = cv2.imencode('.jpg', frame)[1].tostring()
image = { 'Bytes': img_str }
response = rekognition.search_faces_by_image(CollectionId = 'TestingCollection', Image = { "Bytes" : image } )
Первая ошибка : аргумент sendall () 1 должен быть строкой или буфером, а не dict
Причина в моем понимании : {"Bytes": image} - это Json, а НЕ строка
Мое решение : сделать json строкой (не уверен, смогу ли я объединить img_str (байтовый массив)
image = '{ "Bytes" :' + img_str + '}'
response = rekognition.search_faces_by_image(CollectionId = 'TestingCollection', Image = { "Bytes" : image } )
Теперь ошибка : ошибка в распознавании лиц лямбда: кодек «ascii» не может декодировать байт 0xff в позиции 52: порядковый номер не в диапазоне (128)
Вопрос Как объединить байтовый массив (img_str) со строками, не теряя при этомray?
Могу ли я преобразовать переменную image в строку БЕЗ , получая исключение байта невозможности декодирования 0xff ?или
Можем ли мы сделать что-то еще, чтобы преодолеть эту проблему?
Заранее спасибо, ребята !!