public class QueenEngine
extends java.lang.Object
构造器和说明 |
---|
QueenEngine(android.content.Context context) |
QueenEngine(android.content.Context context,
boolean toScreen) |
QueenEngine(android.content.Context context,
boolean withContext,
boolean toScreen) |
QueenEngine(android.content.Context context,
com.taobao.android.libqueen.QueenConfig config) |
限定符和类型 | 方法和说明 |
---|---|
boolean |
addMaterial(java.lang.String path)
添加贴纸资源
|
long |
allocateNativeBuffer(byte[] javaBuffer)
将java内存传入native侧,分配对应native内存
|
Texture2D |
autoGenOutTexture()
自动生成输出纹理,如果存在则根据输入更改大小,返回纹理ID
|
Texture2D |
autoGenOutTexture(boolean keepInputDirection)
自动生成输出纹理,如果存在则根据输入更改大小,返回纹理ID
|
long |
copyNativeBuffer(long nativeBufferPtr,
long bufferSize)
将java内存传入native侧,分配对应native内存
|
Texture2D |
createTexture2D()
构造纹理句柄
|
void |
enableBeautyType(int type,
boolean enable)
关闭美颜模块
|
void |
enableBeautyType(int type,
boolean enable,
boolean debug)
开启美颜模块
|
void |
enableDebugLog() |
void |
enableFacePointDebug(boolean facepoint)
开启人脸检测调试模式,显示人脸顶点
|
float |
getBeautyParam(int type)
获取当前美颜参数
|
android.content.Context |
getContext()
获取Android Context实例
|
long |
getEngineHandler()
获取引擎的Native句柄
|
void |
release()
资源释放
|
void |
releaseNativeBuffer(long nativeBuffer)
释放native内存
|
void |
removeBitmap(java.lang.String name)
删除Bitmap
|
boolean |
removeMaterial(java.lang.String path)
删除贴纸资源
|
int |
render()
渲染
返回值定义如下:
QUEEN_OK = 0,
QUEEN_FAIL = -1,
QUEEN_INVALID_HANDLE = -2,
QUEEN_INVALID_PARAMS = -3,
QUEEN_TIMEOUT = -4,
QUEEN_FILE_ERROR = -5,
QUEEN_FILE_NOT_EXIST = -6,
QUEEN_UNZIP_ERROR = -7,
QUEEN_NET_ERROR = -8,
QUEEN_INVALID_LICENSE = -9,
QUEEN_NO_EFFECT = -10
|
int |
renderTexture(float[] transformMatrix)
一个简易的方法集合:更新输入纹理的矩阵并渲染
返回值定义如下:
QUEEN_OK = 0,
QUEEN_FAIL = -1,
QUEEN_INVALID_HANDLE = -2,
QUEEN_INVALID_PARAMS = -3,
QUEEN_TIMEOUT = -4,
QUEEN_FILE_ERROR = -5,
QUEEN_FILE_NOT_EXIST = -6,
QUEEN_UNZIP_ERROR = -7,
QUEEN_NET_ERROR = -8,
QUEEN_INVALID_LICENSE = -9,
QUEEN_NO_EFFECT = -10
|
void |
setAISegmentForegroundPadding(int padding) |
void |
setAlgAsych(int algType,
boolean enable) |
void |
setBeautyParam(int type,
float value)
设置美颜参数
|
void |
setBitmap(android.graphics.Bitmap bitmap,
java.lang.String name,
float x,
float y,
float width,
float height)
设置Bitmap
|
void |
setBitmapByFilePath(java.lang.String path,
java.lang.String name,
float x,
float y,
float width,
float height)
设置Bitmap
|
void |
setFaceShapeClipEdge(int val)
设置美型边缘裁剪大小,默认30
|
void |
setFilter(java.lang.String path)
设置滤镜图片路径
|
void |
setFilter(java.lang.String path,
boolean flipY)
设置滤镜图片路径
|
void |
setGreenScreen(java.lang.String backgroundPath,
boolean blueScreenEnabled,
float threshold,
boolean autoThresholdEnabled)
设置绿幕抠图参数,注意:开启此抠图功能
|
void |
setInputBitMap(android.graphics.Bitmap bitmap)
设置输入为Bitmap,第一次设置会默认按照向下的方向渲染
|
void |
setInputFlip(int flip)
更新输入纹理是否需要翻转
|
void |
setInputTexture(int texture,
int width,
int height,
boolean isOES)
设置输入纹理
|
void |
setMakeupAlpha(int type,
float alpha,
float maleAlpha)
设置美妆透明度
|
void |
setMakeupImage(int type,
java.lang.String[] path,
int blend,
int fps)
设置美妆素材
|
void |
setOutputRect(int originX,
int originY,
int width,
int height)
设置输出裁剪矩形,如果跟输入一样就不要设置
|
void |
setPowerSaving(boolean enable)
设置节能模式: 降低运算量
注意:请在初始化设置美颜参数前调用
|
void |
setRenderAndFaceFlip(int renderFlip,
int faceFlip)
默认【ios】都是向下,false,false
android默认渲染向上,info向下
|
void |
setScreenViewport(int left,
int bottom,
int width,
int height)
设置渲染的viewport,如果不设置默认使用初始化的宽高
|
void |
setSegmentInfoFlipY(boolean segmentInfoFlipY)
设置绿幕抠图背景是否翻转显示
|
void |
updateFaceShape(int type,
float level)
设置美型参数
|
void |
updateInputDataAndRunAlg(android.graphics.Bitmap bitmap)
更新图像并执行算法
|
void |
updateInputDataAndRunAlg(byte[] imageData,
int format,
int width,
int height,
int stride,
int intputAngle,
int outAngle,
int flipAxis)
更新输入数据并运行算法与runAlg互斥
|
void |
updateInputDataAndRunAlg(byte[] imageData,
int format,
int width,
int height,
int stride,
int inputAngle,
int outAngle,
int flipAxis,
boolean reuseData)
视频帧数据更新处理,用于做engine算法层的数据处理
|
void |
updateInputDataAndRunAlg(byte[] imageData,
int format,
int width,
int height,
int stride,
int inputAngle,
int outAngle,
int flipAxis,
boolean reuseData,
boolean usePreviousFrame)
视频帧数据更新处理,用于做engine算法层的数据处理
|
void |
updateInputMatrix(float[] transformMatrix)
更新输入纹理的矩阵
|
void |
updateInputNativeBufferAndRunAlg(long imageNativeBuffer,
int format,
int width,
int height,
int stride,
int inputAngle,
int outAngle,
int flipAxis)
视频帧数据更新处理,用于做engine算法层的数据处理
|
void |
updateInputTexture(int texture)
更新纹理ID,如果每帧没有变化则不需要修改
|
void |
updateInputTextureBufferAndRunAlg(int inputAngle,
int outAngle,
int flipAxis,
boolean usePreviousFrame)
视频帧数据更新处理,用于做engine算法层的数据处理
|
void |
updateOutTexture(int textureId,
int width,
int height)
需要使用接入方创建的纹理时,通过这个接口更新
|
void |
updateOutTexture(int textureId,
int width,
int height,
boolean keepInputDirection)
更新输出纹理
|
public QueenEngine(android.content.Context context) throws InitializationException
public QueenEngine(android.content.Context context, boolean toScreen) throws InitializationException
context
- toScreen
- 是否要渲染到屏幕(FBO)InitializationException
public QueenEngine(android.content.Context context, boolean withContext, boolean toScreen) throws InitializationException
context
- withContext
- 是否创建gl环境toScreen
- 是否要渲染到屏幕(FBO)InitializationException
public QueenEngine(android.content.Context context, com.taobao.android.libqueen.QueenConfig config) throws InitializationException
context
- InitializationException
public long getEngineHandler()
public void setInputTexture(int texture, int width, int height, boolean isOES)
texture
- 输入的纹理ID,如Camera输出的纹理width
- 输出画布大小,一般为输入纹理的大小(注意不是屏幕的大小)height
- 高isOES
- 是否是OES纹理public void updateInputTexture(int texture)
texture
- 更新的纹理IDpublic void setInputBitMap(android.graphics.Bitmap bitmap)
bitmap
- public void setScreenViewport(int left, int bottom, int width, int height)
left
- bottom
- width
- height
- public void setOutputRect(int originX, int originY, int width, int height)
originX
- originY
- width
- height
- public void updateOutTexture(int textureId, int width, int height)
textureId
- 新纹理IDwidth
- 输出纹理大小,需要保持与设置输入纹理时指定的输出纹理大小一致height
- 输出纹理大小,需要保持与设置输入纹理时指定的输出纹理大小一致public void updateOutTexture(int textureId, int width, int height, boolean keepInputDirection)
textureId
- 输出纹理IDwidth
- 输出纹理大小,需要保持与设置输入纹理时指定的输出纹理大小一致height
- 输出纹理大小,需要保持与设置输入纹理时指定的输出纹理大小一致keepInputDirection
- 保持与输入纹理方向一致public void setRenderAndFaceFlip(int renderFlip, int faceFlip)
renderFlip
- 渲染方向faceFlip
- faceinfo的方向public void setBitmap(android.graphics.Bitmap bitmap, java.lang.String name, float x, float y, float width, float height)
bitmap
- Bitmapname
- Bitmap名称x,y
- Bitmap位置width
- 宽height
- 高public void setBitmapByFilePath(java.lang.String path, java.lang.String name, float x, float y, float width, float height)
path
- name
- x
- y
- width
- height
- public void removeBitmap(java.lang.String name)
name
- Bitmap名称public void enableBeautyType(int type, boolean enable, boolean debug)
type
- 模块类型,是否开启enable
- 是否开启enable
- 是否开启debugpublic void enableBeautyType(int type, boolean enable)
type
- 模块类型,是否开启enable
- 是否开启enable
- 是否开启debugpublic void setBeautyParam(int type, float value)
type
- 类型value
- 值public float getBeautyParam(int type)
type
- public void setMakeupImage(int type, java.lang.String[] path, int blend, int fps)
type
- 美妆类型path
- 素材路径blend
- 纹理混合模式fps
- 保留参数(动态素材),默认填15即可public void setMakeupAlpha(int type, float alpha, float maleAlpha)
type
- 美妆类型alpha
- 美妆透明度maleAlpha
- 保留参数(男性美妆透明度):暂时不支持public void updateFaceShape(int type, float level)
type
- 美型类型level
- 美型参数public void setFaceShapeClipEdge(int val)
val
- public void setInputFlip(int flip)
flip
- public void updateInputMatrix(float[] transformMatrix)
transformMatrix
- wenlli 纹理矩阵public int render()
public Texture2D autoGenOutTexture()
public Texture2D autoGenOutTexture(boolean keepInputDirection)
keepInputDirection
- 保持跟输入纹理一样的方向和大小public int renderTexture(float[] transformMatrix)
transformMatrix
- 纹理矩阵public void updateInputDataAndRunAlg(byte[] imageData, int format, int width, int height, int stride, int intputAngle, int outAngle, int flipAxis)
public void updateInputTextureBufferAndRunAlg(int inputAngle, int outAngle, int flipAxis, boolean usePreviousFrame)
inputAngle
- : 当前帧输入的角度outAngle
- : 输出数据所需转换的角度flipAxis
- : 输出数据的xy轴翻转处理,0为不旋转,1为x轴翻转,2为y轴翻转usePreviousFrame
- : 是否需要复用上一帧数据public void updateInputDataAndRunAlg(byte[] imageData, int format, int width, int height, int stride, int inputAngle, int outAngle, int flipAxis, boolean reuseData)
imageData
- : 当前帧数据format
- : 数据格式width
- : 帧数据宽height
- : 帧数据高stride
- : 用于检测的图像的跨度(以像素为单位),即每行的字节数, 默认情况下设为 0inputAngle
- : 当前帧输入的角度outAngle
- : 输出数据所需转换的角度flipAxis
- : 输出数据的xy轴翻转处理,0为不旋转,1为x轴翻转,2为y轴翻转reuseData
- : 当前帧数据后文是否需要复用,若需复用(true),则engine不会直接修改该帧数据,内部会重新copy一份;若不需复用(false),则engine直接使用该份buffer数据,不copy数据,提升性能public void updateInputDataAndRunAlg(byte[] imageData, int format, int width, int height, int stride, int inputAngle, int outAngle, int flipAxis, boolean reuseData, boolean usePreviousFrame)
imageData
- : 当前帧数据format
- : 数据格式width
- : 帧数据宽height
- : 帧数据高stride
- : 用于检测的图像的跨度(以像素为单位),即每行的字节数, 默认情况下设为 0inputAngle
- : 当前帧输入的角度outAngle
- : 输出数据所需转换的角度flipAxis
- : 输出数据的xy轴翻转处理,0为不旋转,1为x轴翻转,2为y轴翻转reuseData
- : 当前帧数据后文是否需要复用,若需复用(true),则engine不会直接修改该帧数据,内部会重新copy一份;若不需复用(false),则engine直接使用该份buffer数据,不copy数据,提升性能usePreviousFrame
- : 是否需要复用上一帧数据public void updateInputDataAndRunAlg(android.graphics.Bitmap bitmap)
bitmap
- public void updateInputNativeBufferAndRunAlg(long imageNativeBuffer, int format, int width, int height, int stride, int inputAngle, int outAngle, int flipAxis)
imageNativeBuffer
- : 当前帧数据Native地址format
- : 数据格式width
- : 帧数据宽height
- : 帧数据高stride
- : 用于检测的图像的跨度(以像素为单位),即每行的字节数, 默认情况下设为 0inputAngle
- : 当前帧输入的角度outAngle
- : 输出数据所需转换的角度flipAxis
- : 输出数据的xy轴翻转处理,0为不旋转,1为x轴翻转,2为y轴翻转public long allocateNativeBuffer(byte[] javaBuffer)
javaBuffer
- public long copyNativeBuffer(long nativeBufferPtr, long bufferSize)
nativeBufferPtr
- bufferSize
- public void releaseNativeBuffer(long nativeBuffer)
nativeBuffer
- public void setFilter(java.lang.String path)
path
- Filter source pathpublic void setFilter(java.lang.String path, boolean flipY)
path
- 资源路径flipY
- 如果滤镜坐标系原点在public void setAISegmentForegroundPadding(int padding)
public void enableDebugLog()
public void setAlgAsych(int algType, boolean enable)
public boolean addMaterial(java.lang.String path)
path
- public boolean removeMaterial(java.lang.String path)
path
- public Texture2D createTexture2D()
public void release()
public void enableFacePointDebug(boolean facepoint)
facepoint
- public android.content.Context getContext()
public void setGreenScreen(java.lang.String backgroundPath, boolean blueScreenEnabled, float threshold, boolean autoThresholdEnabled)
backgroundPath
- blueScreenEnabled
- threshold
- 幕布敏感度[1,10],默认1autoThresholdEnabled
- 是否根据环境动态计算幕布敏感度,为true时调节参数threshold失效,为false时调节参数threshold生效public void setSegmentInfoFlipY(boolean segmentInfoFlipY)
segmentInfoFlipY
- public void setPowerSaving(boolean enable)
enable
-