sudo apt-get install libdc1394-22-dev libtbb2 libavcodec-dev libavformat-dev libswscale-dev liblapacke-dev libatlas-base-dev libhdf5-dev libtesseract-dev libtesseract-dev libomp5
环境变量:
export QT5_PATH=/usr/local/Qt/Qt5.13.2/5.13.2/gcc_64 #qt环境
export EFFECT_SDK=/home/code/sdk/effect-sdk #effect-sdk路径
export HEIDI_SDK=/home/code/sdk/heidi-sdk #heidi-sdk路径
特效模块目录内容如下
算法模块目录内容如下:
1.安装编译环境
apt-get install build-essential #安装c++编译器
2.解压demo源码, 进入源码目录
3.编译
sh build.sh Debug
4.编译完成之后,可执行文件生成在./build/Debug/Debug中(release版本在"build/Release/Release")
执行"./EffectDemo"可运行demo
5.可以使用qt creator或者vs code打开CMakeLists.txt进行开发或调试
完整的SDK的使用流程在ESSDKProcessor::process()中完成,其中包括了初始化和处理的过程.
SDK的使用依赖opengl的环境,使用动态加载angle库的方式
1.首先需要在main函数中动态加载angle库,并将函数地址设置到libeffect.so中,代码详见
main.cpp:97
2 . demo中的angle库的上下文操作封装在BEF::BEFEffectGLContext中
SDK的初始化在ESSDKProcessor::process()函数首次进入时执行,这是因为我们SDK的使用需要在同一个线程中进行.可在ESSDKProcessor::initializeProcessor()函数中打断点调试帮助理解
处理图像的接口为:
EffectHandle::process(GLint texture, GLint textureSticker, int width, int height, bool imageMode, int timeStamp)
参数说明:
参数名 | 含义 |
texture | 待处理的输入纹理 |
textureSticker | 输出纹理 |
width | 输出纹理宽 |
height | 输出纹理高 |
imageMode | 是否为图片模式 |
timeStamp | 当前时间戳 |
美颜、美型、美妆的设置使用的是同一个接口,一般来说使一个美颜生效需要两步:
第一步: 设置素材对应的路径
第二步:设置素材中,特效的强度(一般强度默认为 0,所以这一步不执行会没有效果)
设置素材路径的入口函数:
ESVideoFilterRunnable::updateComposerNode(int subId, int updateStatus, float value)
参数说明:
参数名 | 含义 |
subId | 需要设置的特效类型,通过该值定位到素材路径,在EffectHandle::registerComposerNode中将类型值和path进行注册 |
updateStatus | 0:关闭,1:打开,2:更新强度值 |
value | 特效的强度值 |
入口函数:
ESVideoFilterRunnable::setSticker(const QString &stickerPath)
参数说明:
stickerPath为贴纸的路径
入口函数:
ESVideoFilterRunnable::setFilter(const QString &filterPath)
参数说明:
filterPath为滤镜的素材地址