Вы используете старый пакет с именем cognitive_face , который, к сожалению, ожидает, что входным аргументом будет либо имя файла, либо URL.
К счастью, новое имя пакета azure-cognitiveservices-vision-face поддерживает потоки, поэтому, если вы переключитесь, вы можете сделать что-то вроде следующего:
from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials
import cv2
import os
face_key = '...' # your API key
face_endpoint = '...' # your endpoint, e.g. 'https://westus.api.cognitive.microsoft.com'
credentials = CognitiveServicesCredentials(face_key)
client = FaceClient(face_endpoint, credentials)
# img is your unencoded (raw) image, from the camera
img = ...
# buf will be the encoded image
ret,buf = cv2.imencode('.jpg', img)
# stream-ify the buffer
stream = io.BytesIO(buf)
# call the Face API
detected_faces = client.face.detect_with_stream(
stream,
return_face_id=True,
return_face_attributes=['age','gender','emotion'])
# access the response, example:
for detected_face in detected_faces:
print('{} happiness probability={}'.format(
detected_face.face_id,
detected_face.face_attributes.emotion.happiness))
Это зависит от действительно ли Ваш perl
двоичный файл перемещаем. Это - опция времени компиляции. Каков вывод этой команды? Это определяется или нет?
perl -V:userelocatableinc
Вы не собираетесь любить этот ответ.
Perl хранит @INC как строки в его двоичном файле. Прежде был userelocatableinc
техника для перемещения Perl состояла в том, чтобы сделать поиск и замену на двоичном файле, а также изменение их в Config.pm. Это - то, как ActiveState поставил перемещаемый Perl.
Строки должны остаться тем же размером, как они были прежде, увеличивая любое дополнительное пространство с пустыми байтами. ActiveState обошел бы это путем конфигурирования Perl с префиксом как "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" или что-то. Это также сделало это действительно однозначным для нахождения в двоичном файле. У Вас нет такой удачи, таким образом, она будет только работать, если текущие пути будут короче, чем пути, Вы хотите заменить их.
Но это слишком сложно. Просто скомпилируйте Perl для себя или источник HP/UX's использования или просто захватите регулярный источник из perl.org. Perl имеет преданного разработчика HP/UX, таким образом, он должен все идти гладко.
Можно указать на любой путь интерпретатора, который Вы хотите в первой строке:
!#/my/local/perl
И если Вы не ищете мобильность через машины, можно установить @INC вручную в сценарии. Я думаю, что существует способ получить его от ENV также, который мог бы быть более портативным.