我正在创建一个DeepLens项目,以在照相机扫描特定人群中的一个时识别人。
该项目使用一个lambda,该lambda处理图像并触发“ rekognition” aws api。
在AWS Lambda控制台(具有1.8.9 boto版本)上,当我尝试调用AWS python API时遇到以下问题:
注意: 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必须是字符串或缓冲区,而不是字典
我理解的原因:{“字节”:图片}是Json而不是字符串
我的解决方案:将json设置为字符串(不确定是否可以连接img_str(字节数组)
image = '{ "Bytes" :' + img_str + '}'
response = rekognition.search_faces_by_image(CollectionId = 'TestingCollection', Image = { "Bytes" : image } )
现在错误:人脸检测lambda错误:“ ascii”编解码器无法解码位置52的字节0xff:序数不在范围(128)中
问题 如何在不丢失数组的情况下将字节数组(img_str)与字符串连接起来?
我可以将 image 变量转换为字符串而没有导致无法解码字节0xff 异常吗?或
我们还能做些其他事情来解决这个问题吗?
预先感谢大家!
答案 0 :(得分:1)
我做了类似的事情,这段代码对我有用:
# img is an image object (numpy array)
success, img = cv2.imencode('.jpg', img)
image= img.tobytes()
response=client.search_faces_by_image(CollectionId='TestingCollection',
Image={'Bytes':image})