07 2019 档案
摘要:一.简介 2D + 透视(深度) = 3D 产生三维效果:透视(视角) 颜色和着色 光照和阴影 纹理贴图 雾 混合和透明 抗锯齿 着色器可以显示一些特殊的效果,包括大气效果 太阳在水面的反射 背景中的星星
阅读全文
摘要:一.简介 二.平移 三.旋转 glRotatef();
阅读全文
摘要:一.简介 VTK(Visualization Toolkit):开源三维图形库 ITK(Insight Segmentation and Registration Toolkit):开源医学图像处理库,包含医学算法和支持医学图片格式DICOM QT:用户图形界面
阅读全文
摘要:一.简介 图像增强操作的作用是提高图像细节,包括 图像降噪 图像平滑 图像边缘增强 图像校正是修复一副受损的图像 二.基于直方图均衡化的图像增强 直方图均衡化是通过调整图像灰阶分布,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度 三.基于拉普拉斯算子的图像增强 使用中心为5的8领域拉普拉斯
阅读全文
摘要:一.简介 图像处理中的形态学操作用于图像预处理操作(去噪 形状简化) 图像增强(骨架提取 细化 凸包 物体标记) 物体背景分割及物体形态量化等场景 二.腐蚀与膨胀操作 OpenCV 提供了 erode() 进行腐蚀操作 提供了 dilate() 进行膨胀操作
阅读全文
摘要:一.简介 二.常用的函数 void erode( InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER
阅读全文
摘要:一.简介 分水岭分割是通过模拟水流来研究地形起伏现象的一种分割方法,其原理是把图像看作地理上的地貌特征,利用像素的灰度值分布特征,对每个符合特征的区域进行划分,形成边界以构成分水岭 分水岭分割的图像是地形起伏的,其中梯度大小跟高度相关 分水岭算法中的图像有三种特征点:局部最值点 交汇边缘点 连接区域
阅读全文
摘要:一.简介 常见的图像滤波的方法:均值滤波 中值滤波 高斯滤波 双边滤波 二.均值滤波
阅读全文
摘要:一.简介 Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口.这些窗口通过窗口过程来接收和处理消息,然后把控制权还给Windows 二.消息的分类 1.队列消息和非队列消息 从消息的发送途径上看,消息分两种:队列消息和非队列消息 队列消息送到系统消息队列,然后到线程消息
阅读全文
摘要:一.简介 CDialog 类是CWnd 类的子类
阅读全文
摘要:一.简介 CWnd 类是CCmdTarget 类的子类
阅读全文
摘要:一.简介 CCmdTarget 类是CObject 类的子类 所有响应消息或事件的类都从它派生,例如: CWinapp CWnd CDocument CView CDocTemplate CFrameWnd等 CCmdTarget 类是 MFC 处理命令消息的基础核心
阅读全文
摘要:一.简介 二.基于对话框(CDialog) Windows的对话框分为两类:模态对话框和非模态对话框模态对话框:当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框相应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互非模态对话框:当它弹出后,本程序其他窗口仍能响应用户输入,非
阅读全文
摘要:一.简介 CObject类是MFC类的基类,具有一些特性: (1) RTTI: 对运行时类信息的支持 (2) DYNAMIC CREATE:对动态创建的支持 (3) SERIAL:对串行化的支持 (4) TRACE/Dump:对象诊断输出 二.CObject 类特性 1.对运行时类信息的支持 该特性
阅读全文
摘要:一.题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 二.解答 f(n) = 0 (n = 0) 1 (n = 1) 2 (n = 2) f(n - 1) + f(n - 2) 三.代码 1.递归 int jump(in
阅读全文
摘要:一.简介 对于带参数列表的函数,必须从右向左添加默认值,如果要为某个参数设置默认值,为了防止歧义,则必须为它右边的所有参数提供默认值 注意:C语言不支持函数默认参数值
阅读全文
摘要:一.简介 图像噪声是图像在获取或传输过程中受到随机信号干扰而出现的. 常见的衡量信号噪声大小的方法是计算信噪比 二.椒盐噪声 三.高斯噪声 四.空间平滑
阅读全文
摘要:一.简介 傅里叶变换是将时域信号分解为不同频率的正弦信号或余弦信号叠加之和 二.图像掩码操作 图像的掩码操作是指通过掩码核算子重新计算图像中各个像素的值,掩码核算子刻画邻域像素点对新像素值的影响程度,同时根据掩码算子中权重因子对原像素点进行加权平均 图像掩码操作常用语图像平滑 边缘检测及特征分析等领
阅读全文
摘要:一.简介 图像变换上的采样就是将图像分辨率改变的过程 采样分为上采样和下采样,上采样是指将图像分辨率扩大,下采样是指将图像分辨率缩小 二.最近邻插值 最近邻插值是最简单的图像缩放处理方法,其原理是提取源数据图像中与其邻域最近像素值来作为目标图像相对应点的像素值 三.双线性插值 双线性插值处理是应用最
阅读全文
摘要:一.简介 二.线性变换 灰度线性变换是图像处理的基本运算,通常应用在调整图像的画面质量方面(图像对比度 亮度及反转),在美图秀秀与Photoshop中可以实现一键美化或亮度自动调节等功能 三.对数变换 四.对比度拉伸 五.灰度级分层 六.灰度比特平面
阅读全文
摘要:一.简介 二.扫描 三.distanceTransform 四.Gamama 矫正
阅读全文
摘要:一.简介 二.光栅化 glShadeMode(GLenum mode); mode GL_FLAT // 平面明暗处理 GL_SMOOTH // 光滑明暗处理 glPolygonMode() glFlush() 三.绘制状态 OpenGL是一个状态机,可以设置它的各种状态或模式,然后让这些状态一直生
阅读全文
摘要:一.简介 图元装配包含了投影 裁剪和视口转换的步骤 二.投影 glMatrixMode(GL_PROJECTION); // 投影矩阵 glLoadIdentity(); // 重置当前指定的矩阵为单位矩阵 glOrtho() // 正投影 glPushMatrix() // 保存矩阵 glPopM
阅读全文
摘要:一.简介 图像包含了绘制的所有像素(pixel),像素被保存在帧缓存(framebuffer)中 帧缓存:是图形硬件设备管理的一块独立内存区域,可以直接映射到最终的显示设备上 在OpenGL中,帧缓存由颜色缓存 深度缓存 模板缓存和累积缓存组成 二.颜色缓存 glClear(GL_COLOR_BUF
阅读全文
摘要:一.简介 二.绘制几何描述 void glBegin(GLenun mode) // 定义图元,图元顶点序列开始 mode GL_POINTS // 单个点 GL_LINES // 一条线 GLINE_STRIP // 多条直线 GLI_LINE_LOOP // 多条直线首尾相连 GL_TRIANG
阅读全文
摘要:一.简介 从OpenG的几何图元 (点 线 三角形构建) 中设置数据,用于构建形状 光栅化:将输入图元的数学描述转换为与屏幕位置对应的像素片元(fragment) 将光栅化产生的每个片元执行片元着色器(fragment shader),从而决定片元的颜色和位置 着色器是用来给GPU(图形处理单元)编
阅读全文
摘要:一.简介 二.成员函数 void glutInit(int* pargc, char** argv) void glutInitWindowPosition(int x, int y) void glutInitWindowSize(int width, int height) void glutI
阅读全文
摘要:一.简介 FreeGlut官网 FreeGlut是Glut的开源版本 二.配置FreeGlut 1.使用cmake cmake(cross platform make)是一个跨平台的安装(编译)工具 三.初始化 1.窗口管理函数 glutInit(int* argc, char** argv) //
阅读全文
摘要:一.简介 二.数据类型 OpenGl数据类型 内部表示形式 对应的C类型 后缀 GLbyte 8位整数 signed char b GLshort 16位整数 short s GLint 32位整数 long i GLfloat 32位浮点数 float f GLdouble 64位浮点数 doub
阅读全文
摘要:一.简介 在通讯中, 同步是指发送端和接收端一直在等待相互的信号,如果没有连接成功就一直发送,造成阻塞状态 异步是指发送端和接受端即使没有接收到相互的信号,也可以先挂起线程资源,做其他的事情,等到调用的时候再激活线程资源,这是非阻塞状态
阅读全文
摘要:一.鸠摩搜索 二.万千合集站 三.PDF之家 四.脚本之家 五.ePUBee 六.Linux公社 七.51CTO
阅读全文
摘要:一.简介 二.竖直上抛运动 (1) 当自由落体运动高度 h = 1/2 * gt^2 时 位移公式: h = Vot- 1/2 * gt^2 (1) 当 g 约等于10 时 速度公式: v = Vo - gt; (2) 最高点时间: 当 v = 0 时, Vo - gt =0; t = Vo / g
阅读全文
摘要:一.简介 在Direct3D中,有三种输出文字的方法: (1) ID3DXFont 接口渲染文字 (2) CD3DFont 类渲染文字 (3) D3DXCreateText() 函数渲染文字 二.ID3DXFont 1.创建 ID3DXFont 接口 HRESULT D3DXCreateFontIn
阅读全文
摘要:一.简介 绘制流水线也称为渲染管线,在DirectX的固定渲染管线中有九个步骤 用来创建3D世界几何描述的2D图像,并且设定一个虚拟摄像机把其中需要的部分透视投影到屏幕上 绘制流水线的流程:局部坐标系->世界坐标系->观察坐标系->背面消隐->光照->投影->裁剪->视口坐标系->光栅化 三维图形的
阅读全文
摘要:一.简介 这篇文章主要是来分享一些别人好的博客 文章 Github开源项目等. 毕竟他山之石,可以攻玉,一直闭门造车总是不好的.也欢迎评论留言推荐,毕竟一个人的力量是有限的. 二.QT 1.论坛网站 QT开源社区 QT开发网 2.博客 《Qt 实战一二三》(这个QT挺全面的) Qt学习之路 三.Op
阅读全文
摘要:学习了这么久的C/C++,还不知道这个,我也是很羞愧~ 一、操作系统的内存 操作系统的内存管理方式有:1.重定位(relocation) 2.分段(segmentation) 3.分页(paging) 4.虚拟存储(virtual memory)而操作系统的内存上各种占用着不同的进程,每个进程占用不
阅读全文
摘要:一.C语言关键字 1.C89关键字 一共32个关键字修饰类型(8):auto-static-extern-register signed-unsigned const volatile基本类型(7):void short-long char-int float-double复合类型(4):typed
阅读全文
摘要:一.四大修饰类型(auto/static/extern/register) 变量根据作用域可分为全局变量和局部变量变量根据生存周期可以分为静态存储方式和动态存储方式.外部(全局)变量(extern)\静态外部变量(static)\静态局部变量(static)存储在静态存储区(用静态存储方式),在程序
阅读全文
摘要:一.简介 MFC封装了Win32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口,简化了Windows编程,同时MFC支持对底层API的直接调用MFC是C++类库,可以通过使用,继承和扩展相应的类来实现功能,对应用程序特定的事件由派生类来处理,不感兴趣的由基类来处理M
阅读全文
摘要:一.左手系坐标和右手系坐标 左手系坐标和右手系坐标的X轴和Y轴都是分别指向右边和上边的,唯一的区别在于手指中指指向的方向,一个是朝着屏幕,一个是朝着我们自己. 二.向量 点是三维空间中的一个坐标,它的值是参照原点绝对的 向量是表示方向和大小的三个分量,与位置距离无关,它是相对于参考点的 1.向量的表
阅读全文
摘要:一.OpenGL编程指南 对应OpenGL版本 4.5 最新 1.OpenGL 编程指南 第八版 对应OpenGL版本 4.3,从OpenGL3到OpenGL4最大的改动是去除了固定渲染管线 2.OpenGL 编程指南 第七版 对应OpenGL版本 3.0/3.1 这个版本比较常用,称为红宝书 二.
阅读全文
摘要:零.前言 虽然没想到这么快就开启了OpenGL大坑,但是DirectX学得差不多了,基本内容都有过一遍,是时候两者相互对照着学了,这样自己对图形学的知识会更加精进一步,等后面大师级别就会学OSG和图形学基本原理,看看论文什么的 一.简介 OpenGL官网 OpenGL(Open Graphics L
阅读全文
摘要:一.简介 二.编译流程 对话框编辑器(Dialog Editor)->.DLG文件->集合成.RC文件图片编辑器(Image Editor)->.BMP/.ICO/.CUR文件->集合成.RC文件字体编辑器(Font Editor)->.FON文件->集合成.RC文件.RC文件通过资源编译器(RC
阅读全文
摘要:一、构造函数(constructors) 构造函数命名与类名完全相同,它没有返回值,也不能用void修饰 构造函数不能被直接调用,必须通过创建对象时才会自动调用 1.无参构造函数 默认构造函数必须是无参构造函数 2.带参构造函数 3.初始化列表构造函数 4.拷贝构造函数 注意:当只有类成员带有指针的
阅读全文
摘要:2.1 Windows GDI 用设备描述表(DC)来绘制图形,不同的绘画程序拥有不同的设备描述表(DC) 2.2 MFC设备描述表类 MFC绘图设备类有CDC基类, 派生出CPaintDC子类,用于在窗口客户区画图(仅限于OnPaint()) CWindowDC子类,用于在窗口客户区画图(除了On
阅读全文
摘要:一.简介 在OpenCV中,可以用C++语法的Mat类来表示一张图像 也可以用C语法的lpllmage或CvMat结构体来表示一张图像 1.单通道像素值 2.多通道像素值 OpenCV默认颜色顺序为BGR 二.成员公有函数 cv::Mat类能够自动管理内存,由矩阵头和指向存储所有像素值的矩阵的指针构
阅读全文
摘要:一.静态链接库 想要生成静态链接库,只需要生成的.lib库文件和该静态链接库的.h头文件即可.h是用来声明所需要的函数名称参数等.lib静态库文件包含了源文件 1. 首先打开VS,新建Win32控制台应用程序,应用程序类型选择静态库,然后新建了静态链接库项目 2. 在源文件文件夹里面添加Static
阅读全文
摘要:一.简介 1.DirectX版本 DirectX1.0 1995年 DirectX 2.0DirectX 3.0DirectX 5.0DirectX 6.0DirectX 7.0 1997年 DirectX 8.0 2000年 DirectX 9.0DirectX 9.0cDirectX 10.0D
阅读全文
摘要:一.简介 d3dx9mesh.h有关网格模型 二.灵活的顶点格式 Direct3D中的顶点不只有空间位置属性,还可以有颜色 法线向量属性等,所以可以自定义一个顶点结构 1.使用 struct ColorVertex{ float _x,_y,_z; //位置 DWORD _color; //颜色};
阅读全文
摘要:一.D3DXCOLOR(颜色结构体) //全局颜色常量 namespace d3d{ ... const D3DXCOLOR WHITE(D3DCOLOR_XRGB(255,255,255)); const D3DXCOLOR BLACK(D3DCOLOR_XRGB(0,0,0)); const D
阅读全文
摘要:一.OBJ文件简介 obj文件不包含面的颜色定义信息,可以引用材质库存储在一个.mtl的文件中(mtllib 材质库),材质库包含了材质的漫射(diffuse) 环境(ambient) 光泽(specular) 反射(specularity) 折射(refraction) 透明度(transpare
阅读全文
摘要:2.2 用GDI绘图 2.2.1 画直线和曲线 2.2.2 画椭圆/多边形/其他形状 2.2.3 GDI画笔和CPen类 默认画笔是一个像素点宽的黑色实线,如果需要创建一个GDI画笔,就必须CDC::SelectObject()将它选入设备描述表 2.2.4 GDI画刷和CBrush类 默认下画出的
阅读全文
摘要:一.简介 纹理映射是一种为三角形赋予图像数据的技术 在 Direct3D 中一个纹理是通过 IDirect3DTexture9 接口来表示,一个纹理是一个像素矩阵的表面被映射到三角形上 二.纹理坐标 Direct3D 使用一个纹理坐标系统,它是由水平方向的 u 轴(向右为正)和竖直方向 v 轴(向下
阅读全文
摘要:一.项目背景 因公司项目需要对.x模型进行处理,但是目前市场上处理.x模型文件的软件太少,对这种模型格式不兼容,所以只能转为OBJ这种通用的模型文件格式,最后处理完再把OBJ模型文件格式转换为.x模型文件格式 二.项目实施 做一个开源的小工具,用来转换.x模型文件和OBJ模型文件,分享到Github
阅读全文
摘要:1.GetWindowRect() 2.ScreenToClient() 3.GetClientRect() 4.MoveWindow() 5.SetWindowPos()
阅读全文
摘要:一.介绍 struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x):val(x),left(NULL),right(NULL){}}; 二.遍历二叉树 1.前序遍历 前序遍历是按照根节点优先,再同级先左再右
阅读全文
摘要:一.简介 二.接口抽象类 1.IDirect3DDevice9 2.IDirect3DVertexBuffer9 / IDirect3DIndexBuffer9 3.ID3DXMesh 三.结构体 1.D3DXVECTOR3 2.D3DXCOLOR 3.D3DLIGHT9 4.D3DXMATRIX
阅读全文
摘要:一.Struct 1.struct的作用 一般用在多种不同数据类型集合里面,便于代码整洁,用于封装便于再次利用 struct默认是public,class默认是private 2.struct的使用 二.Typedef 1.Typedef的作用 可以给结构体起一个别名 2.Typedef的使用 三.
阅读全文
摘要:一.简介 在Windows环境下,只有用WinSDK的API函数才能实现,C和C++的库没有支持,但是好像听说C++11以上的版本好像有支持,待我有空去了解 二.并发和并行 1.并行 并行就是同时执行,类似多个CPU同时工作 2.并发 并发体现为某一个时刻只能处理一个操作,但是它是有次重点的,类似人
阅读全文
摘要:1.静态文本(Static Text) 2.编辑框(Edit Control) 3.按钮(Button) 4.下拉框(Combo Box) 5.组合框(Group Box)
阅读全文
摘要:常用的Windows消息 ON_WM_CHAR(从键盘输入字符) void A::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)ON_WM_COMMAND(用户选择菜单内的某项,或者是控件给其父类发送了一个通知) void A::OnCommand(WPARA
阅读全文
摘要:一.Const常量 1.作用 Const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的用来提高程序的安全性和可靠性(其实我一般都觉得可加可不加,但是加了代码当然更好啦)它推出的初始目的是为了取代预编译指令,因为const定义的常量在程序运行中只有一份拷贝,而#define定义的常量在
阅读全文
摘要:MFC的双缓存需要用到缓存内存 后续补上 MFC的双缓存需要用到缓存内存 后续补上
阅读全文
摘要:一.数组 1.整型数组 在一维数组中,数组名表示数组的第一个元素的地址 a[i] == *(a+i) // 在一维数组中,地址a进行加法 i 之后地址偏移,然后 * 在二维数组中,数组名表示 a[0] 的地址 a[1] == &a[1] [0] // 在二维数组中,a[1] 表示的是地址,而不是数组
阅读全文
摘要:一.宏替换/宏定义(#define) 1.作用 在编译预处理时,对于程序出现的宏名,都用宏定义去替换常量值(字符串或数字)或者表达式,这称为宏展开. 宏定义是由源程序的宏定义完成的,宏展开是由预处理程序自动完成. 宏定义不做语法检查,预处理实在编译之前的处理,而编译的工作之一就是语法检查 宏替换不占
阅读全文
摘要:大坑一:StretchBlt Bitblt 大坑二:GDI函数不要放在BeginScene和EndScene之中 大坑三:不要直接结束任务关闭程序,不然directx会崩溃,需要重启电脑 大坑四:CreateVertexBuffer()最优配置 大坑五:GetDC()使用条件苛刻
阅读全文
摘要:一.简介 创建对话框要比创建普通窗口简单,因为RC文件中,已有几个语句完整地定义了对话框和其中包含的所有控件 对话框主要有两类:模式和无模式 MFC将模式和无模式对话框的功能都封装在CDialog类中 二.模式对话框和CDialog类 创建模式对话框只需要3步: 1.创建一个对话框模板,描述对话框和
阅读全文
摘要:慎用指针,能不用就别作死用了,用了可能报错!!! 慎用new malloc 当我们分配内存是固定的时候,直接用对象来分配,这样就不用作死用指针了. 当我们分配内存是动态的时候,只能用指针来动态分配内存空间(new malloc)
阅读全文
摘要:实现的功能相同,仅仅是涉及的数据类型不同。模板正是一种专门处理不同数据类型的机制 模板是泛型程序设计的基础 在函数定义时可以不指明具体的数据类型,当函数调用时,编译器根据传入的实参自动推断数据类型,这就是类型的参数化 在C++中能够带有类型参数的可以是函数和类,所以模板分为函数模板和类模板 模板是C
阅读全文
摘要:一.string容器 二.vector容器 1.初始化 注意:C++11才支持列表初始化:vector<int> test{1,2,3,4,5} 3.删除容器元素 三.map容器 四.pair容器 五.list容器 六.set容器
阅读全文
摘要:一.简介 二、友元函数 友元关系是单向的 不能传递的 三、内联函数
阅读全文
摘要:一.简介 C++内置类型能够用一般运算符进行操作,而对于自定义类型来说,就要用重载运算符来对两个类对象进行操作 常见的重载运算符有: + - * / ==等 二.两个类型比较
阅读全文
摘要:一.ISO七层网络模型 应用层 应用程序提供的服务表示层 格式化数据,以便为应用程序提供通用接口会话层 在两个节点之间建立端连接传输层 面向连接或无连接的常规数据递送,TCP和UDP协议属于传输层协议网络层 通过寻址来建立两个节点之间的连接,IP协议属于网络协议数据链路层 将数据分帧,添加校验机制,
阅读全文
摘要:一.简介 二.fopen() fopen的模式: r 以只读方式打开文件,该文件必须存在 r+ 以读/写方式打开文件,该文件必须存在 rb+ 以读/写方式打开一个二进制文件,只允许读/写数据 rt+ 以读/写方式打开一个文本文件,允许读和写 w 打开只写文件,若文件存在则长度清为0,即该文件内容会消
阅读全文
摘要:一.简介 双引号:搜索用户所在目录,如果找不到搜索系统指定的目录 尖括号:仅仅搜索系统指定目录 二.C头文件 #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h
阅读全文
摘要:一.简介 C运算符总共有13种: 1.算术运算符:* - + /2.关系运算符:> < == != >= <=3.逻辑运算符:! && ||4.位运算符:<< >> ~ | ^ &5.赋值运算符:= 及扩展赋值运算符6.条件运算符:?:(C语言中唯一的三目/三元运算符)7.逗号运算符:,8.指针运算
阅读全文
摘要:一.位图格式 Windows中的位图有两种格式:一种被称为设备相关图(Device Depend Bitmap,DDB),另一种被称为设备无关图(Device Independ Bitmap,DIB) 二.DDB位图 DDB位图又称为GDI(Graphics Device Interface,图形设
阅读全文