- 博客(108)
- 资源 (1)
- 收藏
- 关注
原创 patchelf 修改 so
例如:将C.so中,原来依赖的so的名称 libA.so 改名为依赖的so名称 libB.so。解压后,将 patchelf-0.17.2-aarch64/bin/patchelf。push 到手机的 /data/local/tmp/soo 目录下。mac 下:下载如下链接zip (mac 需要aarch64)例如:将libOld.so 改名为 libNew.so。2: 修改so中,所依赖的NEEDED 的so名称。1 : 修改 so的名称。
2023-02-24 17:13:27
678
原创 实时 视频 人像分割 虚化
如今,基于机器学习的人像分割/Matting任务已经比较成熟了,比如DeepLabV3 、 MODNET、OCRNet等,感兴趣的可以科普,或者联系博主微信:_shin_y。人像区域保持原始图像不变,核心是背景图像的模糊,主流的方法有高斯模糊、渐进式模糊等。感兴趣的可以科普,或者联系博主 微信:_shin_y。2: 基于分割/Matting 的虚化。1 : 人像分割部分。
2023-02-16 17:13:06
539
原创 python ui - tkinter
from tkinter import *import tkinter.ttk as ttk win = Tk()win.geometry("500x200")win.title("Treeview 学习") col = [1,2,3,4]students = {"name":["kevin","Mike","Fred","Lily"], "性别":["Male","Male","Male","Female"], "年龄":[12,14,1.
2021-06-23 14:14:20
229
原创 pytorch 线性回归
%matplotlib inlineimport torchfrom IPython import displayfrom matplotlib import pyplot as pltimport numpy as npimport randomnum_inputs = 2num_examples = 1000true_w = [2, -3.4]true_b = 4.2features = torch.from_numpy(np.random.normal(0, 1, (num_.
2021-06-22 11:44:52
232
原创 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
267
原创 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
219
原创 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
1277
原创 mac 环境变量
1、打开终端(terminal)。2、用touch 命令创建一个文件,并用open 命令打开文件:$: touch ~/.bash_profile$: open -t ~/.bash_profile3、在文件里面填写环境变量eg:export PATH="/usr/local/bin:$PATH"export PATH="/Users/xxxx/Library/Android/sdk/platform-tools/:$PATH"# Setting PATH for JAVAPAT.
2021-06-21 18:22:31
253
原创 camera trace分析
我仔细研究了一下trace,发现这个vsync-app 信号是有问题的,按道理17ms发一次,比较均匀,但是从trace看要200多ms发一次。
2021-06-21 16:39:53
707
原创 shader 实现 opencv默认的bgr格式快速转rgb格式
实际项目中,经常会使用opencv来加载图片,但是opencv加载的图片默认是bgr格式。可以利用 shader 实现bgr格式快速转rgb格式。
2021-06-10 19:50:25
660
1
原创 smoothstep 平滑函数
smoothstep 平滑函数genType t; /* Or genDType t; */t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);return t * t * (3.0 - 2.0 * t);smoothstep(0.3, 0.6, x)图像如下:< 0.3 为0; >0.6 为1smoothstep(0.6, 0.3, x)图像如下: < 0.3 为1; >0.6 为0...
2020-05-26 09:34:33
3280
1
原创 实时美颜算法实现流程
常见的美颜实现步骤如下:1、采取具有保边效果的滤波算法对图像进行模糊处理这里所说的滤波算法,可以选择双边滤波、表面模糊或导向滤波等,在这里需要注意选择高斯模糊是不太行的,这里的运算速度会直接影响后期的美颜速率。2、用肤色检测的算法保护非皮肤区域3、将模糊之后的图像和原图进行图像融合这一步可以采用基于alpha的图像融合,主要是为了增加美颜后人像皮肤的质感,避免美颜后出现失真的效...
2020-05-06 14:05:45
3501
1
原创 美颜的应用
美颜SDK广泛应用于直播、短视频平台中,为用户的拍摄提供了美颜、滤镜、贴纸等多种实时特效功能,丰富了直播、短视频应用,满足了广大用户的不同需求。美颜SDK的基础功能:1.人像美颜:磨皮美白,粉嫩饱和,大眼瘦脸,调整脸型,精准高效的识别人脸相应数量的关键点并进行实时追踪,一键打造自然美妆;2.特效滤镜:拥有多种精美的滤镜可供选择,实时画面调色预览,提升镜头格调,使照片视频更具有趣...
2020-05-06 13:03:21
1454
1
原创 美颜-磨皮算法
先看一下磨皮算法的一般流程:磨皮算法主要的模块有两个:滤波模块和肤色区域检测模块;滤波模块中,包含了三种算法:1、保边滤波器滤波算法该方法是指通过一些具有保留边缘的能力的滤波器,来将图像磨平,达到皮肤平滑的目的;这类滤波器主要有:①双边滤波器②导向滤波器③Surface Blur表面模糊滤波器④局部均值滤波器⑤加权小二乘滤波器(WLS滤波器)⑥Smart...
2020-05-06 13:02:46
1509
1
原创 视频滤镜
自从抖音将视频拍摄变成有趣的事情之后,包括作者本人在内的大家都开始疯狂迷上了拍抖音和刷抖音,而类似抖音的视频类APP也开始在整个行业内展现出火热的发展趋势。个人认为,拍摄视频必不可少的就是滤镜了,有时候一不小心拍出了废片只要一换滤镜立马就能变成超有感觉的视频大作。可能在视频拍摄之余大家会好奇,这类视频APP是怎样实现滤镜功能的呢?其实这根滤镜SDK有很大的联系,本文就来简单分享下,要想做好一个...
2020-05-06 13:02:02
478
1
原创 图像变形算法
图像局部扭曲算法有三个:局部缩放(Local Scaling)算法、局部平移(Local Transition)算法局部旋转(Local Rotation)算法。其中应用局部缩放算法可实现眼睛放大,局部平移算法则可用于实现瘦脸效果。当然,图像局部缩放算法只是眼睛放大算法流程中的关键的一步,要实现自动眼睛放大算法还需要额外的步骤。简单来说,给一张美女头像,你首先需要应用自动人脸检测技...
2020-05-06 11:20:05
2853
1
原创 美颜-滤波算法
经过处理的图片或视频不但可以使用户皮肤变得清透白皙,还可以实现大眼瘦脸等功能,其中也涉及到了关于人脸检测及特征点提取等美颜算法。本文就简单分享下人人都爱的美颜算法到底是怎么回事。先来简单说下美颜(可简单分为美白和磨皮)1.用具有保边效果的滤波算法对图像进行模糊处理。2.用肤色检测算法保护非皮肤区域。3.将模糊后的图像和原图进行图像融合。4.对融合后的图像进行锐化处理。补充说...
2020-05-06 11:18:42
1037
2
原创 android 在NativeActivity上重新初始化OpenGL ES 2窗口
我们正在将一个大型C应用程序移植到Android,并且在暂停和恢复该应用程序之前一切运行良好.我们听APP_CMD_INIT_WINDOW命令,当它出现时,我们重新初始化所有egl命令以获取表面,上下文和显示.此后,屏幕为黑色.但是,如果我们在设置glClearColor后像预期的那样设置它,这意味着我们至少具有该窗口并且可以将其绘制到该窗口.这使我们相信,可能还有其他未初始化的内容.我的问题...
2020-04-30 11:44:19
705
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
1527
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
1198
1
原创 NativeActivity添加控件和输入法
Android3.0推出了NativeActivity,也让很多C/CPP的开发者有了发挥余地。NativeActivity允许Android开发者使用C/C++在NDK环境中处理Activity的生命周期,但是经过好几天的尝试,发现在C的方向还是很难满足UI方面的需求,比如简单的添加一些输入框,或者显示输入法等等。经过琢磨发现可以通过继承NativeActivity的方法来解决这个问题。...
2020-04-30 11:27:52
691
1
原创 GLSurfaceView 线程交互 queueEvent
GLSurfaceView.Renderer 有三个方法:onSurfaceCreated():在开始渲染的时候被调用,无论什么时候OpenGL ES 渲染不得不重新被创建。(渲染是典型的丢失并重新创建当活动被暂停或恢复。)该方法一个创建长生命周期OpenGL资源(如材质)的好地方。onSurfaceChanged():该方法在surface大小改变时被调用。这是设置你opengl视图端...
2020-04-25 17:01:34
2715
2
原创 glCullFace 、 glFrontFace
glCullFace 和 glFrontFace这两个都是opengl的初级命令,但是其实我都是最近才算得上“用”,以前的话,是因为有一次做billboard广告牌的时候,不剔除面片其中一面的话,很难看出效果成功了没,于是用了一次;最近的话,包括shadow volume中Z-FAIL和Z-PASS都需要正反面分别渲染,shadowmap中在pass1里剔除正面,在光源视觉下渲染到纹理也用到了...
2020-04-23 21:53:13
756
1
原创 步长 渐变 单摆 公式 方法
步长 渐变 单摆方法:直接上代码:// 单摆公式。 private float calculateDist(float current, float target, float divisor) { if(divisor==0) return 0; float absCurrent = Math.abs(current); floa...
2020-04-23 09:54:46
563
1
原创 touch 滑动 单指 拖动
拖动平移代码: @Override public boolean onTouchEvent(MotionEvent me) { //处理手指滑动事件,我这里的处理是判断手指在横向和竖向滑动的距离 //这个距离隐射到球体上经度和纬度的距离,根据这个距离计算三维空间的两个 //夹角,根据这个夹角调整摄像机所在位置 if...
2020-04-23 07:20:07
451
原创 适配屏幕分辨率
适配屏幕分辨率直接上代码:参考注释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
1015
1
原创 OpenCL 2.0 新特性
OpenCL 2.0Khronos Group2013年11月19日宣布了OpenCL通用计算标准的2.0版本特性,其中对共享虚拟内存的支持是一大亮点(此前NVIDIA发布了CUDA 6规范也同样支持共享虚拟内存,但目前仅限Kepler和Maxwell架构的N卡。此外,AMD的GCN架构显卡同样支持。AMD的Kaveri APU支持HSA异构计算和hUMA统一物理寻址,较虚拟共享更加先进。)1...
2020-04-21 18:04:27
1670
1
原创 OpenCL 介绍
OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广...
2020-04-21 18:01:25
518
1
原创 TextureView 详述
1、TextureViewTextureView一样也继承View,它可以将内容流直接投影到View中,可以用于实现Live preview等功能。和SurfaceView不同,它不会在WMS中单独创建窗口,而是作为View hierachy中的一个普通View,因此可以和其它普通View一样进行移动,旋转,缩放,动画等变化。值得注意的是TextureView必须在硬件加速的窗口中。它显示的内容...
2020-04-21 17:58:25
5174
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
459
1
原创 SurfaceTexture 详解
SurfaceTexture是从Android3.0(API 11)加入的一个新类。SurfaceTexture用来捕获视频流(stream)中的图像帧(image frame)的,视频流可以是相机预览或者视频解码数据。SurfaceTexture可以作为android.hardware.camera2、MediaCodec、MediaPlayer、和 VideoDecode这些类的目标视频数据输...
2020-04-20 16:23:42
10119
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
1771
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
436
1
原创 OpenCV : findHomography warpPerspective
1、什么是Homography在图1中有两张书的平面图,两张图分别有四个相对位置相同的点,Homography就是一个变换(3*3矩阵),将一张图中的点映射到另一张图中对应的点。两张图间的H映射关系就可以表示成:...
2020-04-12 10:57:07
1270
1
原创 mac 递归删除隐藏文件 命令
mac 递归删除文件路径find . -name ._*|xargs rm -rf如果出现:unknown primary or operator可以使用 find . -name “*-e” -exec rm ‘{}’ +
2020-04-11 23:43:13
1042
1
原创 Vulkan shader编译
大家好,接下来将为大家介绍Vulkan shader编译。一、编译shader在项目根目录下创建一个子目录,名shaders用于存储顶点着色器文件shader.vert和片段着色器文件shader.frag。GLSL着色器官方没有约定的扩展名,但是这两个扩展名是比较普遍通用的。shader.vert内容如下:#version 450#extension GL_ARB_separ...
2020-04-09 12:11:44
1673
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人