调用百度API实现人像动漫化(C++)
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用百度API实现人像动漫化(C++)相关的知识,希望对你有一定的参考价值。
作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
准备工作
1)登录网站:人像动漫化-百度AI开放平台 。登录百度AI平台。
![](https://image.cha138.com/20211001/52487886f6ab45859b52e5cfe996bc4c.jpg)
2)创建应用,领取免费次数。
![](https://image.cha138.com/20211001/9eb3488f11444dda99902fac6edf4cad.jpg)
![](https://image.cha138.com/20211001/2ddaac0aedb647cdba234a48a0a04e85.jpg)
3)复制AppID、API Key、Secret Key,调用接口的密钥。
![](https://image.cha138.com/20211001/99c2ff783c6248b7be9d544a7c686696.jpg)
4)下载SDK,我用的C++,所以我只介绍C++的相关使用。
![](https://image.cha138.com/20211001/af2edcb768ba4a759a787957691e0edd.jpg)
![](https://image.cha138.com/20211001/862879707e8a4d2ab4b0ab179197a439.jpg)
5)VS创建项目,包含SDK路径。
![](https://image.cha138.com/20211001/6256d6de6f2c4608ae1d93c6c5e96b73.jpg)
6)项目配置OpenSSL库,详情见:
Windows下配置OpenSSL(傻瓜式教程,一看就会)_翟天保的博客-CSDN博客
7)项目配置libcurl库,详情见:
Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)_翟天保的博客-CSDN博客
8)项目配置JsonCpp库,详情见:
Windows下用CMake编译JsonCpp及配置(适合新手)_翟天保的博客-CSDN博客
9)配置好环境,开始测试,见下方代码。C++比其其他语言确实是麻烦的多。。。
C++测试代码
#include <iostream>
#include <curl/curl.h>
#include <image_process.h>
#include <opencv2/opencv.hpp>
#include <json/json.h>
using namespace std;
using namespace cv;
int main()
{
std::string app_id = "XXXXX";//id
std::string api_key = "XXXXXXX";//api_key
std::string secret_key = "XXXXXXXXX";//secret_key
// 图像处理接口
aip::Imageprocess client(app_id, api_key, secret_key);
// 选择图片
Json::Value result;;
std::string image;
aip::get_file_content("test2.jpg", &image);
// 参数设置
std::map<std::string, std::string> options;
options["type"] = "anime_mask";
options["mask_id"] = "3";
// 人像动漫化函数
result = client.selfieanime(image, options);
// 获取结果
std::string res = result["image"].asString();
std::string result_dec;
result_dec = aip::base64_decode(res);
std::vector<char> base64_img(result_dec.begin(), result_dec.end());
cv::Mat img_decode = cv::imdecode(base64_img, IMREAD_COLOR);
cv::Mat mask = img_decode * 255;
// 保存图像
cv::imwrite("nresult.jpg", img_decode);
cv::imwrite("nresultm.jpg", mask);
return 0;
}
测试效果
![](https://image.cha138.com/20211001/c4067865f05949a0bee2f44e35151b5c.jpg)
![](https://image.cha138.com/20211001/2d06adf98f8449e59d4d563806798341.jpg)
![](https://image.cha138.com/20211001/86d50d3c3904486496750c42864039b0.jpg)
人像动漫化的API文档:
https://cloud.baidu.com/doc/IMAGEPROCESS/s/Mk4i6olx5
如果函数有什么可以改进完善的地方,非常欢迎大家指出,一同进步何乐而不为呢~
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
以上是关于调用百度API实现人像动漫化(C++)的主要内容,如果未能解决你的问题,请参考以下文章
头像总撞脸,如何定制化头像?几行Python代码实现人像动漫化