
Android
美颜特效.音视频
这个作者很懒,什么都没留下…
展开
-
mac下cmake编译第一个opencv示例
#include <stdio.h>#include <stdlib.h>#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;int main(int argc,char** argv) { Mat src = imread("/Users/hecj/Desktop/hecj.jpeg"); if(src.empty()){ pr.原创 2021-06-21 18:44:10 · 311 阅读 · 0 评论 -
JNI 资源释放
JNI编程实现了native code和Java程序的交互,因此JNI代码编程既遵循native code编程语言的编程规则,同时也遵守JNI编程的文档规范。在内存管理方面,native code编程语言本身的内存管理机制依然要遵循,同时也要考虑JNI编程的内存管理。本章简单概括JNI编程中显而易见的内存泄漏。从native code编程语言自身的内存管理,和JNI规范附加的内存管理两方面进行阐述。Native Code本身的内存泄漏JNI编程首先是一...原创 2021-06-21 18:40:34 · 259 阅读 · 0 评论 -
CMakeList编译的符号
-std=c++11,支持C++11标准;-std=gnu++11,支持C++11标准和GNU扩展特性;-pthread多线程编译-Wnon-virtual-dtor 当析构函数不是虚函数时给出警告-Wno-unused-parameter 忽略函数参数未使用的警告-Wextra打印额外(可能您并不想要)的警告信息--version-script= gcc 编译动态库,默认将所有函数都导出。使用version-script,仅仅导出要使用的符号表...原创 2021-06-21 18:34:39 · 1463 阅读 · 0 评论 -
more than one file so 解决方法
原创 2021-06-21 17:43:21 · 196 阅读 · 0 评论 -
camera trace分析
我仔细研究了一下trace,发现这个vsync-app 信号是有问题的,按道理17ms发一次,比较均匀,但是从trace看要200多ms发一次。原创 2021-06-21 16:39:53 · 814 阅读 · 0 评论 -
图像变形算法
图像局部扭曲算法有三个:局部缩放(Local Scaling)算法、局部平移(Local Transition)算法局部旋转(Local Rotation)算法。其中应用局部缩放算法可实现眼睛放大,局部平移算法则可用于实现瘦脸效果。当然,图像局部缩放算法只是眼睛放大算法流程中的关键的一步,要实现自动眼睛放大算法还需要额外的步骤。简单来说,给一张美女头像,你首先需要应用自动人脸检测技...原创 2020-05-06 11:20:05 · 3001 阅读 · 1 评论 -
美颜-滤波算法
经过处理的图片或视频不但可以使用户皮肤变得清透白皙,还可以实现大眼瘦脸等功能,其中也涉及到了关于人脸检测及特征点提取等美颜算法。本文就简单分享下人人都爱的美颜算法到底是怎么回事。先来简单说下美颜(可简单分为美白和磨皮)1.用具有保边效果的滤波算法对图像进行模糊处理。2.用肤色检测算法保护非皮肤区域。3.将模糊后的图像和原图进行图像融合。4.对融合后的图像进行锐化处理。补充说...原创 2020-05-06 11:18:42 · 1115 阅读 · 2 评论 -
视频滤镜
自从抖音将视频拍摄变成有趣的事情之后,包括作者本人在内的大家都开始疯狂迷上了拍抖音和刷抖音,而类似抖音的视频类APP也开始在整个行业内展现出火热的发展趋势。个人认为,拍摄视频必不可少的就是滤镜了,有时候一不小心拍出了废片只要一换滤镜立马就能变成超有感觉的视频大作。可能在视频拍摄之余大家会好奇,这类视频APP是怎样实现滤镜功能的呢?其实这根滤镜SDK有很大的联系,本文就来简单分享下,要想做好一个...原创 2020-05-06 13:02:02 · 581 阅读 · 1 评论 -
美颜的应用
美颜SDK广泛应用于直播、短视频平台中,为用户的拍摄提供了美颜、滤镜、贴纸等多种实时特效功能,丰富了直播、短视频应用,满足了广大用户的不同需求。美颜SDK的基础功能:1.人像美颜:磨皮美白,粉嫩饱和,大眼瘦脸,调整脸型,精准高效的识别人脸相应数量的关键点并进行实时追踪,一键打造自然美妆;2.特效滤镜:拥有多种精美的滤镜可供选择,实时画面调色预览,提升镜头格调,使照片视频更具有趣...原创 2020-05-06 13:03:21 · 1614 阅读 · 1 评论 -
美颜-磨皮算法
先看一下磨皮算法的一般流程:磨皮算法主要的模块有两个:滤波模块和肤色区域检测模块;滤波模块中,包含了三种算法:1、保边滤波器滤波算法该方法是指通过一些具有保留边缘的能力的滤波器,来将图像磨平,达到皮肤平滑的目的;这类滤波器主要有:①双边滤波器②导向滤波器③Surface Blur表面模糊滤波器④局部均值滤波器⑤加权小二乘滤波器(WLS滤波器)⑥Smart...原创 2020-05-06 13:02:46 · 1643 阅读 · 1 评论 -
实时美颜算法实现流程
常见的美颜实现步骤如下:1、采取具有保边效果的滤波算法对图像进行模糊处理这里所说的滤波算法,可以选择双边滤波、表面模糊或导向滤波等,在这里需要注意选择高斯模糊是不太行的,这里的运算速度会直接影响后期的美颜速率。2、用肤色检测的算法保护非皮肤区域3、将模糊之后的图像和原图进行图像融合这一步可以采用基于alpha的图像融合,主要是为了增加美颜后人像皮肤的质感,避免美颜后出现失真的效...原创 2020-05-06 14:05:45 · 3737 阅读 · 1 评论 -
android 在NativeActivity上重新初始化OpenGL ES 2窗口
我们正在将一个大型C应用程序移植到Android,并且在暂停和恢复该应用程序之前一切运行良好.我们听APP_CMD_INIT_WINDOW命令,当它出现时,我们重新初始化所有egl命令以获取表面,上下文和显示.此后,屏幕为黑色.但是,如果我们在设置glClearColor后像预期的那样设置它,这意味着我们至少具有该窗口并且可以将其绘制到该窗口.这使我们相信,可能还有其他未初始化的内容.我的问题...原创 2020-04-30 11:44:19 · 765 阅读 · 1 评论 -
Android纯jni编程,在NativeActivity通过intent启动一个新Activity
void launchJavaActivity(){// Attaches the current thread to the JVM.jint lResult;jint lFlags = 0;EngineAndroid * pEngine = (EngineAndroid*)Engine::InstancePtr();JavaVM* lJavaVM = pEngine-&...原创 2020-04-30 11:35:18 · 1631 阅读 · 1 评论 -
NativeActivity通过jni调用java层的Android API
1. 继承Nativity,打通native和java层public class MyNativeActivity extends NativeActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log...原创 2020-04-30 11:31:24 · 1270 阅读 · 1 评论 -
NativeActivity添加控件和输入法
Android3.0推出了NativeActivity,也让很多C/CPP的开发者有了发挥余地。NativeActivity允许Android开发者使用C/C++在NDK环境中处理Activity的生命周期,但是经过好几天的尝试,发现在C的方向还是很难满足UI方面的需求,比如简单的添加一些输入框,或者显示输入法等等。经过琢磨发现可以通过继承NativeActivity的方法来解决这个问题。...原创 2020-04-30 11:27:52 · 773 阅读 · 1 评论 -
touch 滑动 单指 拖动
拖动平移代码: @Override public boolean onTouchEvent(MotionEvent me) { //处理手指滑动事件,我这里的处理是判断手指在横向和竖向滑动的距离 //这个距离隐射到球体上经度和纬度的距离,根据这个距离计算三维空间的两个 //夹角,根据这个夹角调整摄像机所在位置 if...原创 2020-04-23 07:20:07 · 480 阅读 · 0 评论 -
适配屏幕分辨率
适配屏幕分辨率直接上代码:参考注释public static Rect calRealSceenRect(Rect rectFace, int width, int height, int rotation ,Boolean isBackCamera) { int oriention; oriention = rotation / 90; ...原创 2020-04-22 00:24:33 · 1054 阅读 · 1 评论 -
YUV 图像旋转
YUV 图像旋转:直接上代码:/** * 旋转翻转YUV数据 * * @param data * @param imageWidth * @param imageHeight * @return */private byte[] flip(byte[] data, int imageWidth, int imageHeight) { for (int i = 0;...原创 2020-04-21 11:58:49 · 518 阅读 · 1 评论 -
SurfaceTexture 详解
SurfaceTexture是从Android3.0(API 11)加入的一个新类。SurfaceTexture用来捕获视频流(stream)中的图像帧(image frame)的,视频流可以是相机预览或者视频解码数据。SurfaceTexture可以作为android.hardware.camera2、MediaCodec、MediaPlayer、和 VideoDecode这些类的目标视频数据输...原创 2020-04-20 16:23:42 · 10353 阅读 · 1 评论 -
IDE AndroidStudio 中Module is not specified 解决办法
打开ide发现项目启动不了了,出现了这个错误:Module is not specified解决方法1:解决如下:Edit Configuration -> Configuration -> Use classpath of module -> 选择你当前的module -> Apply就可以了2:Sync...原创 2020-04-14 15:59:21 · 1845 阅读 · 1 评论 -
Git-命令行-解决“Your local changes to the following files would be overwritten by checkout”
有些时候,当我们使用git checkout <branchname>命令切换分支的时候,有时会切换失败,然后出现以下的提示信息:提示信息说的很清楚,当前分支有未跟踪的文件,checkout 命令会覆盖它们,请缓存( stash )或者提交( commit )。解决方法1:未跟踪文件的内容改动很重要,保存修改//第一种方式 存到暂存区git add....原创 2020-04-14 15:56:03 · 472 阅读 · 1 评论