摘要:
链接OpenCV iOS 首先当然是下载openvc框架。 创建项目然后把opencv拖进项目。 需要将用到opencv的文件后缀改成.mm。 手动添加opencv框架的框架依赖关系。 在引入UIKit和Foundation前引用库。 然后可以开始写代码了。 在OpenCV中,所有的图像处理操作通常 阅读全文
摘要:
人脸识别贴纸 整个处理过程大致分为3个步骤:1、使用AVFoundation调用摄像头采集视频流获得图像信息2、使用CoreImage库判断采集到的图像信息中是否包含有人脸3、将结果使用OpenGL渲染显示到屏幕上 一、调用摄像头采集视频 获得视频帧: 二、识别图像中的人脸 得到的featuresA 阅读全文
摘要:
天空盒子(skyBox) SkyBox 制作3D游戏的一个经典技术应用。 原理 SkyBox 是基于正方体模型的渲染技术。将6个方向拍下来的天空图片分别贴在正方体的对应面上,从内部观察正方体就可以得到一个密闭的天空环境 这是我们skyBox贴图。 可以把它分成上下左右前后六张图,然后创建CubeMa 阅读全文
摘要:
造一面镜子 最基本的原理就是中学关于镜面反射的物理知识。镜子上显示的图像,可以看做镜像过去的另一个人所看到的的情景。使用OpenGL的术语来说就是把摄像机以镜子所在的平面做镜像,得到的镜像摄像机所观察到的世界,就是镜面上应该显示的内容。基本原理虽然很简单,但实现过程中也会遇到诸多问题。比如如何把镜像 阅读全文
摘要:
绘制地形 地形模型一般是由NxN的网格构成,网格的点在y轴上的坐标由灰度地形图上相应的颜色决定。颜色越亮,高度越高。颜色每个通道的取值范围可以是0~ 255,通过公式转换,可以很容易的控制生成模型的高度。 生成网格顶点数据 用多个三角带来生成地形。根据单个三角带的的顶点数据的生成规则,计算每个顶点的 阅读全文
摘要:
基本纹理 纹理通常来说就是一张图片,我们为每一个顶点指定纹理坐标,然后就可以在Shader中获取相应的纹理像素点颜色了。一般使用uv来表示纹理坐标,uv是一个二维向量(u,v),u和v的取值从0到1。我在代码中为每个顶点数据增加了2个GLFloat来表示uv的值。 我们来观察一下X轴0.5处的平面的 阅读全文
摘要:
光照 使用Shader实现平行光的效果 平行光的方向不会随着离光源的距离而改变。所以我们在模拟平行光的时候仅仅需要使用一个光照方向即可。 我们有了光照方向,接下来还需要一个重要数据,平面的朝向。一个平面如果刚好面朝光线,那自然是最亮的。当然还有些材质的平面可以反射光线,反射光线的强度和你观察的角度相 阅读全文
摘要:
绘制一个圆柱体 使用代码绘制一个圆柱体。 分解圆柱体 先把圆柱体进行分解,可以看成上下两个圆和中间一个展开的矩形组成。 我们可以将圆柱体看做三个几何体来绘制,绘制两个圆形和一个卷成桶状的矩形。我们将圆形半径定义为radius,矩形高为height,宽既是圆形的周长。 绘制圆形 圆形其实就是一个正n边 阅读全文
摘要:
绘制一个正方体 正方体其实就是由6个矩形组成的几何体,X,Y,Z轴上各两个矩形。 先绘制X轴上两个矩形 效果如下图: 接下来绘制Y轴和Z轴上的两个矩形: 效果如图: 练习的代码 阅读全文
摘要:
矩阵 矩阵。相当于一个二维数组,有自己的运算规则。先来复习一下关于矩阵的加减乘除的一些基本运算。 矩阵的加法 矩阵的减法 它的加法就是把两个矩阵对应位置的元素加起来放在结果矩阵对应的位置上。应该注意的是只有同型矩阵之间才可以进行加减法。也就是矩阵的加减要求两边的矩阵必须尺寸相等。 矩阵的乘法 变换矩 阅读全文