SDK 2.0.0。枚举见 参数枚举。
resource_path 指向 resource.fbd
桌面引擎用 fopen 打开资源包,传入 文件路径,不要填目录:
resource.fbd 随应用分发,启动时解析为绝对路径。
一个引擎,串行 ProcessImage
用 Create 拿到实例,不是单例。会话期内保持一个引擎。ImageFrame 与引擎都不是线程安全的——把 ProcessImage 串行化到一条工作线程(external_context = true 时则必须在持有 GL 上下文的线程上调用)。
shared_ptr。每帧重建引擎代价很高(授权 + 初始化)。
在帧上设置 FrameType
在 ProcessImage 之前设置 frame->type。
相册大图(预览与导出)
高分辨率静图不要在每次拖动滑条时把原图像素送进ProcessImage,也不要缩放后丢掉原图。
打开照片时保留完整缓冲,并另做一份预览帧(长边约 1280–1440)。调参打预览(FrameType::Image);导出对全尺寸帧再处理一次,同一套 setter。输出尺寸等于输入。摄像头预览仍用采集分辨率 + FrameType::Video。
强度
实时场景从较低值开始。美型为[-1.0, 1.0],其余强度为 [0.0, 1.0]。
SetBeautySkinOnly(true),让磨皮 / 美白只作用在皮肤上。
滤镜与贴纸
传入.fbd 路径或字节。在下一次 ProcessImage 后生效。避免每帧切换滤镜 / 贴纸。
用 GetStats 监控
avg_process_time_ms 应低于帧预算(30 fps 约 33 ms)。预览建议 720p;静图导出用 FrameType::Image。
OpenGL 上下文
将
facebetter.dll 放在 .exe 旁(或加入 PATH)。链接时使用 facebetter.lib。
空闲时暂停
窗口最小化或摄像头停止时跳过ProcessImage;会话结束可 engine.reset()。不要在会卡住交互的 UI 线程上做处理。
授权
离线或受限网络优先license_token;否则用 app_id + app_key 在线 v2。不要把生产密钥写进公开仓库。见 授权与许可。
