Я использую azure-cognitive-services , отправляя какое-то изображение и получая ответ, возникла проблема с типом данных 'bytes'.
Я отправил изображение, загруженное open(image_path, "rb").read()
, которое имеет тип <class 'bytes'>
, и отправил запрос requests.post(emotion_recognition_url, params=params, headers=header, data=byted_image)
, где данные имеют определение: :param data: (optional) Dictionary (will be form-encoded), bytes, or file-like object to send in the body of the :class:'Request'.
, и все хорошо и работает нормально.
Когда я попытался отправить изображение, захваченное из cv2.VideoCapture(0)
, которое возвращает numpy.ndarray
, тогда оно преобразуется в байты на np.ndarray.tobytes(image)
, так что его dtype равен <class 'bytes'>
и отправляется на конечную точку requests.post()
. возвращается с ошибкой "{'error': {'code': 'InvalidImage', 'message': 'Ошибка декодирования, формат изображения не поддерживается.'}}" .
Примечания:
Я также пытался отправить атрибут порядка np.ndarray.tobytes()
с помощью 'C', 'F' и даже None, и ничего не получалось.
Когда я сохраняю кадр с помощью cv2.imwrite()
и перечитываю изображение снова с помощью open(image_path, "rb").read()
, это работает, но это не лучшее решение.