- 博客(17)
- 资源 (4)
- 收藏
- 关注
转载 面试中的10大排序算法总结
本文转载自码农网:http://www.codeceo.com/article/10-sort-algorithm-interview.html#0-tsina-1-10490-397232819ff9a47a7b7e80a40613cfe1 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不...
2019-01-23 11:24:40
421
原创 java 7/8 中的HashMap解析
简介HashMap是基于哈希表实现的,每一个元素都有一个key - value。HashMap 存在哈希冲突,在java7之前使用的是数组+链表来解决冲突,在java8之后,对HashMap进行了一些修改,最大的区别就是使用了红黑树,也就是其由数组+链表+红黑树组成的。在java 7中,在HashMap中查找的时候,根据hash值可以快速定位到数组的下标,但是之后比较链表中的数字的话,就需...
2019-01-17 21:57:45
371
原创 Android系统播放器MediaPlayer源码分析
前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java->Jni->C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal...
2018-12-06 14:09:33
3684
2
原创 递归和循环----汉诺塔
题目:汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?有两个限制条件,第一个是每次只能够...
2018-12-04 15:36:05
1200
原创 递归和循环----青蛙跳台阶
青蛙跳台阶题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?思路:只有1级台阶,只有一种跳法如果有2级台阶,那么就有两种跳法如果有n(n>2)级台阶的话,n级台阶的跳法可以看成函数f(n),那么第一次跳的时候有两种选择,一是跳1级,那么这种跳法的数目就等于f(n-1)。二是跳2级的话,那么这种跳法的数目就等于f(n-2)。所以...
2018-12-01 20:53:26
825
原创 Android OpenGLES滤镜开发之仿抖音灵魂出窍
前言前几篇写的滤镜效果比如美颜、大眼、贴纸效果都是在录制视频之前,这个灵魂出窍的效果是在录制视频之后,可以对视频添加效果。思路可以观察到灵魂出窍的效果,其实其主图像本没有什么变化,只是新增了一张进行缩放的纹理,跟主图像的alpha进行线性融合的。怎么去取灵魂呢,灵魂是跟着视频所播放的内容不断更新的,不可能一直只是同一个图像。所以这里的思路是每X帧拷贝一帧作为灵魂,然后将灵魂按比例放大,最后...
2018-11-15 14:39:01
2285
1
原创 Android OpenGL ES滤镜开发之美颜效果
前言其实之前我就是已经把美颜效果啥的都做完了,但是就一直懒得记录,今天来记录一下,之前记录的就是大眼睛还有贴纸的效果。以前的时候不爱写博客,总觉得很麻烦,现在发现写博客是用来总结复习很好的一个途径,很多时候写效果或者做些什么,就基本就是做完就完事儿了,也不去总结一下或者拿来复习一下,所以有的时候自己写过的东西,自己就不记得了。写这个美颜效果,也参考了很多的资料,在文章的最后会把参考的文献列出来...
2018-11-15 11:17:27
4159
2
原创 Android OpenGLES滤镜开发之贴纸效果
前言上一篇中写到了如何实现放大眼睛的效果,这一篇实现贴纸效果,就像那个faceu相机,b612相机,还有抖音都会有的这种贴纸效果。思路1、贴纸肯定也是需要定位到人脸的2、找到贴纸需要放置的位置3、将贴纸纹理和人本身纹理进行融合实现人脸定位啥的,我就不说了,不清楚的可以去前面的文章看看,主要来看看贴纸是如何贴上去的1. 创建贴纸的纹理 //OpenGL 纹理 ...
2018-11-14 17:26:06
3450
4
原创 Android OpenGLES滤镜开发之大眼效果
前言在很多美颜相机啊,抖音啊,都会有一些放大眼睛的效果,今天就来实现如何放大眼睛。思路1、首先使用OpenCV定位到人脸2、根据定位到的人脸去检测人脸关键点,进而获取到人眼睛的位置。3、根据眼睛位置,对眼睛进行放大。实现定位人脸人脸的定位追踪,在之前文章中已经写过OpenCv实现人脸追踪 当时是在xCode上写的,把里面的代码移植到Android中就可以了,这个是C写的,所以需要移...
2018-11-14 13:50:56
2771
3
原创 Android 仿抖音之使用OpenGL实现抖音视频录制
前言在之前写了仿抖音的第一步,就是使用OpenGL显示摄像头数据,今天这篇就是在之前的基础上来录制视频,并且对之前的代码的结构进行了简单的整理,然后进行了仿抖音的视频录制。工程结构整理在仿抖音的第一步中封装了ScreenFilter类来实现渲染屏幕的操作,我们都知道在抖音的视频录制过程中,可以添加很多的效果进行显示,比如说磨皮、美颜、大眼以及滤镜等效果,如果把这些效果都放在ScreenFil...
2018-11-07 17:17:31
3198
1
原创 OpenGL学习之FBO的使用
概述帧缓冲对象FBO(Frame buffer Object)。OpenGL默认情况下,在GLSurfaceView中绘制的结果是显示到屏幕上的,但是实际情况中大部分时候都不需要渲染到屏幕中去,这个FBO就是来实现这个需求的,FBO可以让不渲染到屏幕当中去,而是渲染到离屏的buffer中。关于FBO比较好的资料,这个是英文版的http://www.songho.ca/opengl/gl_f...
2018-11-06 18:23:16
8163
原创 SurfaceTexture源码分析
概述SurfaceTexture,是Android3.0以后引入的,它对图像流的处理并不直接显示,而是转换为GL外部纹理,因此可用于图像流数据的二次处理,比如Camera滤镜、特效等。分析源码SurfaceTexturejava.lang.Object↳ android.graphics.SurfaceTexturepublic class SurfaceTexture { }...
2018-11-02 16:23:50
2015
1
原创 SurfaceView源码分析以及使用
概述SurfaceView是Android中比较特殊的一类视图,它与普通的View最主要的区别是它和它的视图容器并不是在一个视图层。为什么要使用SurfaceView我们知道Android系统中是提供了View来进行绘图处理,然后可以通过invalidate方法通知系统去调用view.onDraw方法去对界面进行重绘,而Android系统是通过发出VSYNC信号来进行屏幕的重绘,可以看出Vi...
2018-11-01 19:17:46
1204
原创 Android 仿抖音之使用OpenGL显示摄像头
前言在上一篇博客中,简单介绍了一下有关于OpenGL的基础内容,没看过的,可以看一下OpenGL ES基础,如果对里面有很多内容还是不懂的话,就百度一下吧,里面我都是简单说了一下大概内容,从这一篇开始,用仿抖音的项目来一步步具体介绍怎么在Android中使用OpenGL。首先抖音其实就是录制前处理和录制后特效的处理,今天先来第一步使用OpenGL显示摄像头,为后面的工作做准备。需求使用Op...
2018-11-01 15:11:04
2261
原创 Android OpenGL ES基础
前言此篇仅仅介绍一些概念,其他的内容,会在后面更新,后面内容会以仿抖音小视频项目形式进行介绍。什么是OpenGL ESOpenGL :Open Graphics Library图形领域的工业标准,是一套跨编程语言、跨平台的、专业的图形编程(软件)接口。它主要用于二维、三维图像,是一个功能强大,调用方便的底层图形库。与硬件无关,可以在不同平台比如Android,Mac,Windows,I...
2018-10-30 18:06:52
578
原创 使用OpenCv实现人脸跟踪(一)
简介OpenCV是一个基于BSD许可开源发行的跨平台计算机视觉库。拥有C++,Python和Java接口,并且支持Windows, Linux, Mac OS, iOS 和 Android系统。实现了图像处理和计算机视觉方面的很多通用算法。主要模块以及功能模块功能Core核心基础模块,定义了被所有其他模块和基本数据结构(包括重要的多维数组Mat)使用的基本函数、底层...
2018-10-18 16:30:01
11998
2
原创 OpenCV学习笔记(一)在XCode中配置OpenCV
简介这个配置方法不仅仅只适用于OpenCV,其他的三方库也是同样的配置,比如像FFmpeg呀等都是一样的配置配置方法Mac上需要先安装好cmake 这个直接使用brew安装就行Mac安装OpenCv,这个使用:brew install opencv 命令行直接下载下载的路径就是:/usr/local/,可以使用open /usr/local/ 打开文件,然后opencv就下载好了...
2018-10-17 16:52:21
1582
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人