利用BS和CS实现百度人脸识别API

利用B/S和C/S实现百度人脸识别API

  • C/S服务器的设计:

    def server(interface,port):
        # 创建套接字并进行监听
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.bind((interface, port))
        sock.listen(1)
        print('Listening at', sock.getsockname())
        while True:
            print('Waiting to accept a new connection')
            # 接收客户端连接
            sc, sockname = sock.accept()
            print('We have accepted a connection from', sockname)
            print('  Socket name:', sc.getsockname())
            print('  Socket peer:', sc.getpeername())
            #接收图片
            ph=getphoto(sc)
            #识别图片中的人的属性
            back=baiduface(ph)
            #将人的属性发送给客户端
            putfaceinfo(sc,back)def server(interface,port):
        # 创建套接字并进行监听
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.bind((interface, port))
        sock.listen(1)
        print('Listening at', sock.getsockname())
        while True:
            print('Waiting to accept a new connection')
            # 接收客户端连接
            sc, sockname = sock.accept()
            print('We have accepted a connection from', sockname)
            print('  Socket name:', sc.getsockname())
            print('  Socket peer:', sc.getpeername())
            ph=getphoto(sc)
            back=baiduface(ph)
            putfaceinfo(sc,back)
    
  • 客户端设计:

    def client(host, port,photospath):
        # 创建套接字并进行连接
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((host, port))
        print('Client has been assigned socket name', sock.getsockname())
        #发送图片给服务器
        putphotos(sock,photospath)
        #接收服务器发送的人的属性
        getfaceinfo(sock)
    
  • 注意:要实现百度ai人脸识别就要理清楚传输的过程,先传输文件长度,在传输文件内容。
    在这里插入图片描述

  • B/S主要设计包括三个方面:前台界面,数据库,服务器。该框架是用的flask,前台用的jinjia2

主页:

@app.route('/', methods=['GET', 'POST'])
#主页,主要上传图片
def index():
    #判断是否为post请求
    if request.method == 'POST':
        #通过前台获取imgfile文件
        pichead = request.files.get('imgfile')
        #读取文件
        a=pichead.read()
        #将文件数据存入数据库中
        db = facebank.open_database()
        #获取图片的id
        binahao=facebank.addphotos(db, a)
        #通过图片id获取图片数据
        bytes=facebank.getphotos(db, binahao)
        #调用百度人脸识别
        b=baiduface(bytes)
        #将人的属性存入到数据库中
        facebank.addface(db,b[0],b[1],b[2],b[3],b[4])
        #通过图片id得到得到人的属性数据
        c=facebank.getface(db,binahao)
        db.commit()
        #提交后跳转到结果解码
        return redirect(url_for('result',sex=c[0],age=c[1],people=c[2],fa=c[3],yan=c[4]))
    return get('index.html').render()

结果界面:

#获取人的属性结果界面
@app.route('/result',methods=['GET', 'POST'])
def result():
    return get('result.html').render(sex=request.args.get('sex'),age=request.args.get('age'), people=request.args.get('people'),
                                 fa=request.args.get('fa'),yan=request.args.get('yan'))

在实现B/S同样要注意传输的过程:

BS图片
详细请参考:利用BS和CS实现百度人脸识别API代码和说明文档

注:该用于自己学习笔记。
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_56607768/article/details/118907638