美文网首页
微信小程序:使用photo2cartoon库,实现人像照片转卡通

微信小程序:使用photo2cartoon库,实现人像照片转卡通

作者: 我的小小笔尖 | 来源:发表于2022-05-02 16:22 被阅读0次

    主要步骤

    1)安装paddlepaddle(百度的AI平台)
    2)安装paddlehub(AI模型的开发/管理工具)
    3)下载photo2cartoon模型库
    4)写服务器端程序
    5)写微信端程序

    很多时候遇到AI、模型、对抗网络,等等专业词汇,会感觉头疼、不会、放弃了。
    其实我们不需要知道很专业的东西,我们只需要会使用模型即可。
    模型可以简单理解为一个函数,或者一个黑匣子,他有输入和输出,我们只需要会用即可。

    服务器端程序(tornado+flask)

    flask app.py 代码
    使用flask_uploads实现照片上传,调用photo2.py进行转换

    @app.route('/366/uploadphoto2', methods=['POST'])
    def uploadphoto2():
        if request.method == 'POST' and 'photo' in request.files:
            try:
                openid = request.form['openid']
                new_file_name = openid+'.jpg'
                upload_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), photo2_upload_path, new_file_name)
                if os.path.isfile(upload_file_path):
                    os.remove(upload_file_path) # 文件已存在,则删除该文件(同名文件只能有1个)
    
                uploaded_file_name = photos.save(request.files['photo'], name=new_file_name) # 上传后的文件
                uploaded_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), photo2_upload_path, uploaded_file_name) # 上传后的文件绝对路径
                # 人像转卡通
                ins = photo2.Photo2(uploaded_file_path, openid)
                result = ins.photo2cartoon()
            except:
                return {'status': -2}
            else:
                return result
        return {'status':-1}
    

    photo2.py代码,实现具体的转换功能

    # -*- coding: utf-8 -*-
    import paddlehub as hub
    import os.path
    
    # 模型加载
    photo2cartoon_model = hub.Module(name='Photo2Cartoon')
    
    class Photo2:
        def photo2cartoon(self):
            try:
                # 照片转卡通,并保存到自己的openid目录下
                result = photo2cartoon_model.Cartoon_GEN(
                    images=None,
                    paths=[self.filepath],
                    batch_size=1,
                    output_dir=self.ouput_dir,
                    visualization=True,
                    use_gpu=False
                )
            except:
                return {'status':0, 'except':'photo2cartoon error'}
            return {'status':1, 'photo2cartoonImage': os.path.join(self.ouput_dir, 'result_0.png')}
    
        def __init__(self, filepath, openid):
            # 待转换的原图
            self.filepath = filepath
            # 用户openid
            self.openid = openid
            self.ouput_dir = os.path.join('static','366','photo2',self.openid)
    

    小程序界面效果

    捕获52-1.JPG
    捕获52-2.JPG

    补充信息

    1)photo2cartoon 好像不支持serving,即不能通过hub serving start启动作为服务端。
    2)转换后生产的图片文件名是result_0.png,好像不能自定义文件名。

    相关文章

      网友评论

          本文标题:微信小程序:使用photo2cartoon库,实现人像照片转卡通

          本文链接:https://www.haomeiwen.com/subject/fehvyrtx.html