最近一直对人脸识别有兴趣既是为了保密,也是为了解密,抽出时间,写写python的人脸识别学习过程,不当之处尚请批评指正!
第一个问题就是opencv安装的问题,不得不说windows实在是太不友好了:在安装opevncv时经常会出现 ImportError: No module named cv2 的错误,即找不到cv2的包。这时候安装扩展包即可命令如下
pip install opencv-python
当然sreeninfo也是必须要安装的包。另外,注意路径里尽量不要有中文……又是不友好的一瞬间,ok安装完以后运行即可,具体代码网上有的是拷过来就可以了,不过注意两个地方:1、文件路径要用绝对路径且路径中没有中文字符;2、路径前用r做字符标记。
在经历过坎坷的opencv之路后发现百度云的API真的是个好东西啊,尤其是对学生之类的个体开发者十分友好。官网有相关文档教学,已经很丰富了,相关的错误码解读也很棒。
说点题外话,对编程知识的学习更应该是兴趣,而非强迫。程序猿,技术宅,更多的应该是对技术和知识的执着并非单纯看重计算机行业入手容易工资较高的现状,这就是目前的现状,程序猿很多,但是真正优秀的编程人员依旧是凤毛麟角,技术的执着是信仰,是灵魂,是每个夜里你屏幕上跳动的激情。
关于百度API的使用首先你需要三个东西:网址、SK、AK。
首先导入相关库,这一步相信大家都有过了解,具体需要哪些库视所需函数确定。然后,获取百度云API所提供的成功取得access_token,且其有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token,获取后此时存储的access_token数据类型为str
request = urllib.request.Request(host_access_token)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
具体格式问题请参考 字典 和 json 部分。
关于人脸识别的图片上传方式,笔者建议采用BASE64和FACE_TOKEN相结合的方式,理由吗,亲测好用。
这里放一下人脸识别的关键代码:
img = open(r"F:/python_FaceAPI/picture/" + img,"rb")
img_base64 = base64.b64encode(img.read())
params = urllib.parse.urlencode({"image":img_base64,"image_type":"BASE64","face_field":"age,beauty,expression,gender,glasses,race"})
.encode(encoding='UTF8')
request = urllib.request.Request(url=host_detect, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib.request.urlopen(request)
还有人脸比对的:
FaceComparison.py
网友评论