Games101笔记|概述和线性代数

本文是games101课程的第1,2课的相关笔记。这两课的内容比较基础,大学中有线性代数的学习经验就相对非常容易理解。 1. 计算机图形学概述 计算机图形学(Computer Graphics,CG)是研究计算机在硬件和软件的帮助下创建计算机图形的学科,是计算机科学的一个分支领域,主要关注……

阅读全文

C++中的字符串split

使用过Java, Python或者go这些语言然后切换到C++的同学很可能遇到一个问题就是:为什么在C++的string类里面为什么没有提供一个split函数呢? 猜测可能有下面几个原因: split之后的结果存放在哪里呢?vector?但是string类中引入vector势必会造成s……

阅读全文

C++11中的多线程库

1. 线程的创建 C++11中提供了thread类可以直接用来创建线程,创建步骤: 包含thread所在的头文件 #include <thread> 在需要的地方直接创建一个thread对象,构造函数中传入一个线程入口函数(或者是一个可调对象)。(普通函数,lambda表达式,重载了()的类都可以传入,普通类成员函数也可……

阅读全文

双目测距2

简介: 首先进行双目摄像头定标,获取双目摄像头内部的参数后,进行测距;本文的双目视觉测距是基于BM算法。注意:双目定标的效果会影响测距的精准度,建议大家在做双目定标时,做好一些(尽量让误差小)。 前言 首先进行双目摄像头定标,获取双目摄像头内部的参数后,进行测距;本文的双目视觉测距是基……

阅读全文

双目测距3

在双目立体匹配中,有基于SAD算法的BM、SGBM、GC立体匹配技术,但是在OpenCv3.0以后,GC算法就从legacy中去除掉了。为了查看三种算法的匹配效果及运算性能,我在Windows10中安装了OpenCv2.4.9,并以VsCode为IDE进行程序编写。 一、VsCod……

阅读全文

双目测距1

准备双目摄像头: 准备标定板 标定的开始阶段最需要用到的标定板,可以直接从opencv官网上能下载到: http://docs.opencv.org/2.4/_downloads/pattern.png 具体如下: 然后,建议固定到盒子上,方便等下拍照。 采集图片 建议左右摄像头,同时拍照,分别保存起来,可以参考 opencv 双目摄像头拍照 保存大约20到30张图片,MATLAB2016的这个工具十分……

阅读全文

Windows内核编程04|内核工作流程

1 简介 在应用层利用SetThreadPriority等API设置线程优先级是受到进程优先级限制的,所以本节就计划通过编写一个驱动程序和应用程序相结合突破这种限制。本节代码放在了Github上访问此链接 2 驱动程序初始化 先按照上一节的介绍来了解一下创建一个驱动程序的基本流程:入口函数……

阅读全文

Windows内核编程03|内核编程基础

1. 内核编程一般准则 用户编程和内核编程之间的差别 1.1 未处理的异常 在用户模式下如果程序出现未处理的异常,整个程序会直接中止;在内核模式下出现未处理的异常,会造成系统奔溃,出现BSOD(蓝屏)。所以内核代码得非常小心,编译时绝对不能跳过任何细节和错误检查。 1.2 终止 当用户进程终止时不管是否正……

阅读全文

Windows内核编程02|环境搭建和部署测试

1.安装VisualStudio2019 2.安装WindowsDriverKit 3.创建项目 4.添加代码 // driver.c #include <ntddk.h> // DriverEntry Routine DRIVER_INITIALIZE DriverEntry; // Unload Routine DRIVER_UNLOAD DriverUnload; // DriverEntry: 驱动程序的入口点 // DriverObject: 驱动程序对象 // RegistryPath: 注册表中的路径(驱动程序路径) NTSTATUS DriverEntry( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath ) { // 编译器默认的警告等级为 /W4, // 并且开启 /WX 将警告视为错误……

阅读全文