百度大脑--二进制图像数据格式转换问题

来源:互联网 发布:17网广州网络批发市场 编辑:程序博客网 时间:2024/05/16 17:32
win7 32位python3.6.3opencv3.3.0baidu-AI1.0

在百度大脑的文档中心:
http://ai.baidu.com/docs#/Face-Python-SDK/top
要求上传的图片格式为二进制数组。并给出了例子,采用open(filename,‘rb’)并open()的形式。

这里写图片描述

这里写图片描述

从本地读取一个图片文件发送显然不存在任何问题,但如果是采用摄像头捕获,在线发送,则涉及到文件的格式转换问题。

摄像头读取往往采用VideoCapture和read命令,此时的图像格式显然不能直接传递给Baidu-Ai,转换命令如下。

import cv2import numpy as npfrom aip import AipFace""" APPID AK SK --在百度云中创建应用汇得到相应的ID"""APP_ID = '12335535'API_KEY = '35353534523535'SECRET_KEY = '2352352353535235 'my_aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY)#创建一个百度AipFace实例'''#这是百度给出的例程,采用了python中二进制文件的读法: def get_file_content(filePath):        with open(filePath, 'rb') as fp:            return fp.read()'r':默认值,表示从文件读取数据。'w':表示要向文件写入数据,并截断以前的内容'a':表示要向文件写入数据,添加到当前内容尾部'r+':表示对文件进行可读写操作(删除以前的所有数据)'r+a':表示对文件可进行读写操作(添加到当前文件尾部)'b':表示要读写二进制数据'''#这是采用opencv方法读入图片:frame = cv2.imread('c://face.png')cv2.imshow('mywindow', frame)#将读入的图片进行编码,转化为二进制的文本文件,保存在buff中nparry_encode = cv2.imencode('.png', frame)[1]data_encode = np.array(nparry_encode)frame_encode = data_encode.tostring()#########################################################对片进行处理#########################################################将处理的图片进行解码,从buff中读入并转化nparry_decode = np.fromstring(frame_encode, np.uint8)frame_decode = cv2.imdecode(nparry_decode,1 )#将二进制图片转化为图片流,1 代表彩色图片cv2.imshow('result', frame_decode)

关于python中文件读取命令的说明参见文档:
https://docs.python.org/3/library/functions.html?highlight=open#open
这里写图片描述

关于OpenCV中编码解码的说明参见文档:
https://docs.opencv.org/master/df/d9f/namespacecv_1_1omnidir_1_1internal.html#a2d2fdf1ab0543fd762b22c6b07a0056e

这里写图片描述
这里写图片描述

格式编码后,就可以对处理中的MAT进行上传和显示了。

阅读全文
0 0
原创粉丝点击