虹软人脸识别离线python3数据库保存遗留问题
虹软人脸识别离线python3数据库保存遗留问题头大两天没解决
下载的是python版本,想着把人脸数据存在mysql里,结果一个数据保存问题弄了两天还遇到鬼了,不知道怎么解决,写出来,看后面会不会遇到解决方法。
为什么非要搞数据库保存特征?
demo里提供本地文件保存人脸特征的方法,奈何自己考虑后面会牵扯人脸数据管理的问题,所以数据库保存更合适,文件保存的方法操作起来很不方便。
demo里的代码
res ,face_feature1= face_engine.ASFFaceFeatureExtract(img,single_detected_face1)
- 代码所得 ,face_feature1是获得的图片特征,这可能是个特有类型的数据,里面包含特征长度和特征数据,特征是bytes类型的;
- 数据库里用于存储特征字段的类型设置blob;
#比较两个人脸的相似度
res,score = face_engine.ASFFaceFeatureCompare(face_feature1,face_feature2)
- 对比代码 上面是获取的两个特征直接对比的代码,返回相似度,参数为特有类型的特征数据;
- 问题来了 按道理直接把特征数据存入数据库最简单,但是类型不对,所以用feature关键字提取里面的特征二进制,结果出来的是个7位数的int。然后用工具方法get_feature_bytes()获取到二进制特征;
- 问题继续发生 二进制数据写入数据库时报错,需要转义。然后用pymysql的escape_string()方法解决;
- 妖怪来了 ;
print(type(features))
features=escape_string(features)
打印获取的二进制特征features数据类型显示为bytes,然而最下面报错缺告诉你这是list。
好了跳进黄河也说不清了。我这代码冤死了。到底是啥原因。烧香拜佛也解决不了吧。
通过数据库保存人脸特征的方法,显然自己能力不足解决不了。下面考虑使用案例中本地文件保存的方式,希望能尽快解决问题。