Перво-наперво, документация здесь говорится:« Поддерживаются форматы JPEG, PNG, GIF (первый кадр) и BMP. Допустимый размер файла изображения составляет от 1 КБ до 6 МБ ».
Я отправляю .jpg размером ~ 1,4 МБ. В моем поиске другие, у кого была эта проблема, были настраиваемыми пакетами формирования и столкнулись с проблемами при передаче изображений. однако, в отличие от других, я не формирую собственный вызов API, просто передача jpg в python sdk. Что происходит не так / что мне не хватает?
Ошибка:
getting image, start time
opening image: 2019_11_30_18_40_21.jpg
time elapsed for capturing image: 8.007975816726685
time elapsed for detecting image: 0.0017137527465820312
appending face found in image
identifying face
time elapsed for identifying image: 0.8008027076721191
Person for face ID e7b2c3fe-6a62-471f-8371-8c1e96608362 is identified in 2019_11_30_18_40_21.jpg with a confidence of 0.68515.
Traceback (most recent call last):
File "./GreeterCam_V0.1 - testing.py", line 116, in <module>
face_client.person_group_person.add_face_from_stream(PERSON_GROUP_ID, face.candidates[0].person_id, image)
File "/home/pi/.local/lib/python3.7/site-packages/azure/cognitiveservices/vision/face/operations/_person_group_person_operations.py", line 785, in add_face_from_stream
raise models.APIErrorException(self._deserialize, response)
azure.cognitiveservices.vision.face.models._models_py3.APIErrorException: (InvalidImageSize) Image size is too small.
мой исходный код:
if __name__ == '__main__':
FRAMES_PER_SECOND = 0.13
ENDPOINT = os.environ['COGNITIVE_SERVICE_ENDPOINT']
KEY = os.environ['COGNITIVE_SERVICE_KEY']
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
PERSON_GROUP_ID = 'my-unique-person-group'
#IMAGES_FOLDER = os.path.join(os.path.dirname(os.path.realpath(__file__)))
#camera = PiCamera()
#camera.start_preview()
test_images = [file for file in glob.glob('*.jpg')]
#webcam = cv2.VideoCapture(0)
while(True):
start_time = time.time()
print('getting image, start time')
for image_name in test_images:
image = open(image_name, 'r+b')
print("opening image: ", image_name)
time.sleep(5)
faces = face_client.face.detect_with_stream(image)
#image = open(os.path.join(IMAGES_FOLDER, imageName), 'r+b')
face_ids = []
time1 = time.time()
print('time elapsed for capturing image: ' + str(time1-start_time))
# detect faces in image
time2 = time.time()
print('time elapsed for detecting image: ' + str(time2-time1))
for face in faces:
print('appending face found in image')
face_ids.append(face.face_id)
if face_ids:
print('identifying face')
# if there are faces, identify person matching face
results = face_client.face.identify(face_ids, PERSON_GROUP_ID)
time3 = time.time()
print('time elapsed for identifying image: ' + str(time3-time2))
name = 'person-created-' + str(time.strftime("%Y_%m_%d_%H_%M_%S"))
if not results:
#if there are no matching persons, make a new person and add face
print('No person in the person group for faces from {}.'.format(imageName))
new_person = face_client.person_group_person.create(PERSON_GROUP_ID, name)
face_client.person_group_person.add_face_from_stream(PERSON_GROUP_ID, new_person.person_id, image)
time4 = time.time()
print('time elapsed for creating new person: ' + str(time4-time3))
print('New Person Created: {}'.format(new_person.person_id))
for face in results:
if not face.candidates:
new_person = face_client.person_group_person.create(PERSON_GROUP_ID, name)
face_client.person_group_person.add_face_from_stream(PERSON_GROUP_ID, new_person.person_id, image)
else:
#add face to person if match was found
print('Person for face ID {} is identified in {} with a confidence of {}.'.format(face.face_id, os.path.basename(image.name), face.candidates[0].confidence)) # Get topmost confidence score
face_client.person_group_person.add_face_from_stream(PERSON_GROUP_ID, face.candidates[0].person_id, image)
time4 = time.time()
print('time elapsed for creating new person: ' + str(time4-time3))
Также это есть на Raspbian на Pi 3B (+?)
WIDTH x HEIGHT
, а не вMB
. - person furas   schedule 16.12.2019add_face_from_stream
не требуется никаких изменений. Я обнаружил, что в вашем примере это была проблема с областью действия, которая вызывала эту ошибку. Надеюсь, это поможет. У меня сейчас нет места для загрузки своих изображений, но я постараюсь сделать это в ближайшее время, если вы захотите скачать и протестировать. github.com/Azure- Примеры / когнитивные-услуги-краткий-код / - person Azurespot   schedule 27.02.2020