SakuraMashiro
码龄8年
关注
提问 私信
  • 博客:159,539
    159,539
    总访问量
  • 32
    原创
  • 2,001,489
    排名
  • 59
    粉丝
  • 0
    铁粉

个人简介:研究兴趣:深度学习,计算机视觉,计算机图形学,AR , 编程能力:C++,Java,Python 座右铭:关注积累,关注成长

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2016-06-22
博客简介:

SakuraMashiro的博客

查看详细资料
个人成就
  • 获得60次点赞
  • 内容获得45次评论
  • 获得250次收藏
  • 代码片获得403次分享
创作历程
  • 3篇
    2021年
  • 1篇
    2020年
  • 1篇
    2019年
  • 8篇
    2018年
  • 20篇
    2017年
  • 1篇
    2016年
成就勋章
TA的专栏
  • OpenCV
    1篇
  • 图形学与Shader
    2篇
  • Android音视频
  • android
    19篇
  • java
    1篇
  • Windows编程
    1篇
  • 算法
    5篇
  • c++
    6篇
  • 数据结构
    1篇
  • PHP
    1篇
  • 机器学习
  • android opengl
    4篇
  • 微信开发
    1篇
  • 数字图像处理
    2篇
  • Go语言
    1篇
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 软件工程
    性能优化
  • 学习和成长
    面试
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

183人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

OpenGL模型变换,视图变换矩阵推导过程与glm::LookAt源码解析

本文将详细介绍OpenGL中的几个坐标系的概念,常见的几种变换,以及视图变换矩阵的推导过程,最后会分析下glm库视图变换矩阵的源码首先,模型变换(Model),视图变换(View),投影变换(Projection)就是我们常说的三个特殊的矩阵,也经常被统一称为MVP矩阵,要理解他们,我们首先要理解几个坐标系的概念。右手坐标系右手坐标系与左手坐标系都是三维笛卡尔坐标系,他们唯一的不同在于z轴的方向,如下图,左边是左手坐标系,右边是右手坐标系OpenGL中一般用的是右手坐标系下面的几个坐标系则是在图形
原创
发布博客 2021.12.05 ·
6101 阅读 ·
10 点赞 ·
1 评论 ·
45 收藏

Sobel边缘检测算子OpenCV实现

基本概念1.算子算子也就是滤波器,或者又称作卷积核,通常是一个3x3或者8x8的矩阵,在数字图像处理中有广泛的应用,将滤波器用来对二维图像中的每个像素做点积操作,及对应的像素点相乘再求和,可以达到边缘提取,图像分割等各种效果2.图像的梯度在二维图像中,边缘就是图像的像素值发生突变的那些点的集合,边缘的像素点与周围领域的像素点在亮度上存在较大差异,在高等数学中梯度代表了函数在某个点上最大的方向导数,也就是在沿着该方向函数的变化最快,那么在图像中,二维函数的梯度就可以理解为沿着x轴或者y轴的偏导数,由于
原创
发布博客 2021.05.05 ·
711 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

GLSL快速入门,用Shader实现彩虹特效

GLSL快速入门,用Shader实现彩虹特效导语Shader简介GLSL基础语法常用内置函数彩虹效果实现如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入导语本文将先简要介绍一下Shader和GLSL,然后用一个简单的fragment shader的例子来实现一个彩虹的特
原创
发布博客 2021.03.28 ·
2034 阅读 ·
1 点赞 ·
1 评论 ·
12 收藏

C++拷贝构造函数,析构函数与内存泄漏的那些坑

C++拷贝构造函数,析构函数与内存泄漏的那些坑拷贝构造函数拷贝初始化为什么拷贝构造函数的参数必须是引用类型拷贝赋值元素符析构函数不完整定义拷贝控制成员可能带来的问题阻止拷贝拷贝构造函数如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数class Sales {public: Sales() { std::cout<<"Sales()"<<std::endl; } Sales(const S
原创
发布博客 2020.12.06 ·
1979 阅读 ·
1 点赞 ·
0 评论 ·
8 收藏

OPPO2019春季校园招聘C/C++开发(手机方向)面试总结

本科软件工程普通学生一枚,春招之路,记录下心得面试过程首先一上来面试官先介绍了下自己,然后让我做个自我介绍,我像往常一下介绍了下自己的项目经验和实习经历,阐述了一下求职意向。接着面试官从我的专业基础问起,问我在校学的最好的专业课是啥,我说是计算机网络和操作系统,然后他就问我操作系统主要讲了啥,然后我从进程管理,内存管理,文件管理和设备管理这几个方面讲了一下一些。(实际上并不准确,进程管理属于...
原创
发布博客 2019.03.06 ·
5022 阅读 ·
4 点赞 ·
1 评论 ·
17 收藏

LinkedList,LinkedHashMap,LruCache源码解析

最近正好在复习数据结构的知识,顺带看了下jdk 1.8中的LinkedList和LinkedHashMap以及android中常用的LruCache的源码(内部采用LinkedHashMap实现),以加强自己的理解,下面就分享一下我阅读源码的一些简单的心得。一、简单高效的双链表LinkedList为什么使用双链表而不使用单链表,原因应该是,作为一种需要频繁在表头或表尾进行插入或删除操作的数...
原创
发布博客 2018.06.21 ·
747 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

《Go语言圣经》学习笔记一、几个简单的例子入门Go语言

一、Go语言的优势Go是一种编译型语言,被很多人称为21世纪的C语言,因其简洁、高效的特性,以及并发协程(goroutine)和消息通信(channels)等良好的机制,在服务端开发尤其是现在分布式、大数据的敏捷开发环境中得到了许多人青睐。二、Go语言的由来Go语言最初是由Google的工程师在开发过程中有感于传统编程语言的臃肿,并开始思考有关程序设计语言的一些关键性问题,发起了一...
原创
发布博客 2018.06.10 ·
1400 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

直方图均衡原理及OpenCV实现

一、概念直方图均衡,空域图像处理中最常用的技术之一,属于灰度变换的范畴,旨在通过一个灰度变换的函数,将原图像的每个灰度级映射到一个新的灰度级,提高灰度级的动态范围,使图像的直方图(即不同灰度出现次数的概率分布图)在整个灰度级的范围内趋于均匀,从而增强图像整体的对比度。二、映射函数灰度变换的目的就是找到一个合适的映射函数s=T(r) 对于离散的数字图像而言,就变成了累积求和 ...
原创
发布博客 2018.05.15 ·
450 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Android端使用OpenGL ES加载OBJ文件数据

一、obj模型文件概览在介绍如何用程序加载obj模型文件之前,首先需要了解一下它的格式。 obj文件是最简单的一种3D模型文件,可由3dx MAX或Maya等建模软件导出,广泛应用于3D图形应用(如游戏)程序和3D打印等等,其本质上就是文本文件,里面存储的是模型的顶点坐标,顶点法向量和纹理坐标信息。下面看一个典型的obj文件# 3ds Max Wavefront OBJ Expo...
原创
发布博客 2018.05.09 ·
8281 阅读 ·
5 点赞 ·
15 评论 ·
29 收藏

libjpeg库压缩Bitmap

发布资源 2018.05.09 ·
rar

Bitmap压缩原理解析与Android 7.0之前通过NDK使用libjpeg库高质量压缩图片

一、Bitmap压缩原理我们平常使用的bitmap.compress() 的内部实际上调用了如下native方法private static native boolean nativeCompress(long nativeBitmap, int format, int quality, OutputS
原创
发布博客 2018.01.27 ·
3016 阅读 ·
0 点赞 ·
2 评论 ·
8 收藏

Android性能优化(二)布局渲染流程及优化

一、布局渲染流程我们平常开发中的那些控件,比如Button,TextView,是如何渲染到屏幕上的呢? 简而言之,就是现先将xml解析成相应的对象,然后CPU经过计算以后将图形信息传给GPU,GPU来负责绘制,栅格化等操作,最终显示到手机屏幕上。二、为什么会出现卡顿Android每16ms对屏幕进行一次刷新,当一帧画面渲染时间超过16ms的时候,垂直同步机制会让显示器硬件等待
原创
发布博客 2018.01.08 ·
1344 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Android性能优化(一)App启动原理分析及启动时间优化

一、启动原理解析Android是基于Linux内核的,当手机启动,加载完Linux内核后,会由Linux系统的init祖先进程fork出Zygote进程,所有的Android应用程序进程以及系统服务进程都是这个Zygote的子进程(由它fork出来的)。其中最重要的一个就是SystemServer,在ZygoteInit类的main方法中,会调用startSystemServer方法开启系统里
原创
发布博客 2018.01.06 ·
11951 阅读 ·
4 点赞 ·
3 评论 ·
24 收藏

Android仿Volley手写属于自己的万能网络访问框架

在android网络通信中,我们平常开发时都会使用诸如Volley,Retrofit,AsyncHttpClient等等别人的框架,确实十分的便捷,省去了我们不少的时间。但是使用第三方框架也会带来一些不可避免的缺点。一、项目中大量使用第三方框架的缺点引入较多冗余代码,别人框架中有许多代码是我们不需要的框架中部分的函数,功能不满足我们的需求(定制性较弱)下面,我们就仿照Volley框架的思想手撸
原创
发布博客 2018.01.02 ·
1152 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

算法分析与设计(五)回溯法

回溯法的基本思想回溯法有“通用的解题法”之称。该方法系统地搜索一个问题的所有解或任一解。问题解的表示:回溯法将一个问题的解表示成一个n元式(x1,x2,…,xn)的形式。 显示约束:对分量xi的取值限定。 隐示约束:为满足问题的解而对不同分量之间施加的约束。 解空间:对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。回溯法通常将问题解空间组织成“树”结构,通过采
原创
发布博客 2017.12.31 ·
3241 阅读 ·
2 点赞 ·
1 评论 ·
9 收藏

算法分析与设计(四)动态规划(二)

动态规划的概念复习 每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。动态规划的思想和策略 将待求解的问题分解为若干个子问题,按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。 适合用动态规划求解的问题,经分解后得到的子问题往往不是互相独立的。(这一点与分治法不同)能用动态规划求解的问
原创
发布博客 2017.12.14 ·
467 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

算法设计与分析(三)动态规划(一)

基本思想 1.动态规划是一种使多阶段决策过程最优的通用方法。2.动态规划算法与分治法类似,其思想把求解的问题分成许多阶段或多个子问题,然后按顺序求解各子问题。最后一个阶段或子问题的解就是初始问题的解。3.动态规划中分解得到的子问题往往不是互相独立的。但不同子问题的数目常常只有多项式级。用分治法求解时,有些子问题被重复计算了许多次,从而导致分治法求解问题时间复杂度较高。 4.动态规划基本思想是保留
原创
发布博客 2017.11.27 ·
995 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

调用微信OAuth2.0网页授权接口实现用户信息的绑定

在微信网页开发中,可以通过OAuth2.0网页授权机制,来获取用户基本信息,进而实现自己的业务逻辑。 微信官方文档 关于网页授权回调域名的说明 1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 ht
原创
发布博客 2017.11.09 ·
22318 阅读 ·
0 点赞 ·
1 评论 ·
11 收藏

算法设计与分析(二)分治

一、分治法基本思想 1.求解问题算法的复杂性一般都与问题规模相关,问题规模越小越容易处理。 2.分治法的基本思想是,将一个难以直接解决的大问题,分解为规模较小的相同子问题,直至这些子问题容易直接求解,并且可以利用这些子问题的解求出原问题的解。各个击破,分而治之。 3.分治法产生的子问题一般是原问题的较小模式,这就为使用递归技术提供了方便。递归是分治法中最常用的技术。二、分治法解决问题的先决条
原创
发布博客 2017.11.06 ·
1462 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

算法设计与分析(一) 蛮力法

一、概述 蛮力法是一种简单直接地解决问题的方法,常常直接基于问题的描述和所涉及的概念定义。也可以用“just do it!”来描述蛮力法的策略。一般来说蛮力策略也常常是最容易实现的方法。 二、优缺点 虽然巧妙和高效的算法很少来自于蛮力法,但它在算法设计策略中仍然具有重要地位. 1.蛮力法适应能力强,是唯一一种几乎什么问题都能解决的一般性方法。 2.蛮力法一般容易实现,在问题规模不大的情况下
原创
发布博客 2017.11.05 ·
11691 阅读 ·
1 点赞 ·
0 评论 ·
21 收藏
加载更多