- 博客(24)
- 资源 (22)
- 收藏
- 关注
原创 机器学习——卷积神经网络计算
卷积运算与相关运算在计算机视觉领域,卷积核、滤波器通常为较小尺寸的矩阵,比如3×33×3、5×55×5等,数字图像是相对较大尺寸的2维(多维)矩阵(张量),图像卷积运算与相关运算的关系如下图所示(图片来自链接),其中FF为滤波器,XX为图像,OO为结果。相关是将滤波器在图像上滑动,对应位置相乘求和;卷积则先将滤波器旋转180度(行列均对称翻转),然后使用旋转后的滤波器进行相关运算。两者...
2019-05-21 14:58:57 1051
原创 驱动——K7-DMA-PCIe
在做Windows系统PCIe驱动时,遇到的一些硬件驱动有关的问题总结一下:一、K7K7处理器:信号采集卡K7系列CPU是AMD公司推出的高性价比CPU。结构 3个并行的X86指令解码器;9个为高频率优化的超标量微结构;动态推测时序,乱序执行; 2048个入口分支预测表和12个入口返回堆栈;3个超标量乱序整数管道,每个包含: 整数执行单元,地址产生单元;3个超标量...
2019-05-17 16:48:16 1240
原创 Windows驱动——利用WinDriver开发PCI设备驱动程序
摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。 WinDriver是一套设备驱动程序开发组...
2019-05-17 15:58:55 5133
原创 OpenGL加载纹理glGenTextures——内存优化(OpenGL内存泄漏)
前言先上图看我程序在加载纹理时,内存泄漏情况:正常内存大小5分钟内存泄漏情况因为程序一直在接收二维数组(图像像素数据)然后实时绘制到界面,所以会一直加载纹理图像,OpenGL产生纹理id函数glGenTextures(GLsizei n, GLuint *textures)函数一直在调用,导致内存一直在泄漏。这谁扛得住~~~glGenTextures...
2019-05-07 15:07:12 5365 1
原创 图像灰度化的三种方法(matlab、C++、Python实现)
灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程。灰度值大的像素点比较亮(像素值最大为255,为白色),反之比较暗(像素最下为0,为黑色)。图像灰度化的算法主要有以下3种: (1)最大值法:使转化后的R,G,B得值等于转化前3个值中最大的一个,即:...
2019-05-07 11:01:16 13152
原创 C++编程:输入/输出 I/O
概要C++ 标准库提供了一组丰富的输入/输出功能,本博客主要讨论 C++ 编程中最基本和最常见的 I/O 操作。C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。I/O 库头文件下列的头文件在 C++ 编程中很重要。头...
2019-05-06 16:05:03 940
原创 算法时间复杂度和空间复杂度详解
1、算法的概念:算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?有如下的指标:2、衡量算法的指标:(1)时间复杂度:执行这个算法需要消耗多少时间。(2)空间复杂度:这个算法需要占用多少内存空间。 同一个问题可以用不同的算法解决,而一个算法的优劣将影响到算法乃至程...
2019-05-06 10:05:27 901
原创 类和对象编程(九):类的静态成员
C++类的静态成员我们可以使用static关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符::来重新声明静态变量从而对...
2019-05-05 15:58:51 706
原创 类和对象编程(八):指向类的指针
C++指向类的指针一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符->,就像访问指向结构的指针一样。与所有的指针一样,您必须在使用指针之前,对指针进行初始化。下面的实例有助于更好地理解指向类的指针的概念:#include <iostream> using namespace std;class Box{ ...
2019-05-05 15:54:34 573
原创 类和对象编程(七):this指针
C++this 指针在 C++ 中,每一个对象都能通过this指针来访问自己的地址。this指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。下面的实例有助于更好地理解 this 指针的概念:实例#include <iostream> usi...
2019-05-05 15:53:20 234
原创 类和对象编程(六):内联函数
C++内联函数C++内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字inline,在调用函数之前需要对函数进行定义。如果已定义的函数...
2019-05-05 15:50:12 509
原创 类和对象编程(五):友元函数
C++友元函数类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字frie...
2019-05-05 15:48:24 528
原创 类和对象编程(四):拷贝构造函数
C++拷贝构造函数拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参数传递给函数。 复制对象,并从函数返回这个对象。 如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一...
2019-05-05 15:45:22 345
原创 类和对象编程(三):构造函数&析构函数
类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。下面的实例有助于更好地理解构造函数的概念:实例#include <iostream> using namespace std; class Line{...
2019-05-05 15:42:34 241
原创 类和对象编程(二):类访问修饰符
C++类访问修饰符数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记public、private、protected来指定的。关键字public、private、protected称为访问修饰符。一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始...
2019-05-05 15:39:24 266
原创 类和对象编程(一):类成员函数
C++类成员函数类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。让我们看看之前定义的类 Box,现在我们要使用成员函数来访问类的成员,而不是直接访问这些类的成员:class Box{ public: double length; // 长...
2019-05-05 15:35:09 309
原创 面向对象编程(七):接口(抽象类)
C++接口(抽象类)接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class Box{ public: // 纯虚函数 ...
2019-05-05 15:31:12 211
原创 面向对象编程(六):数据封装
C++数据封装所有的 C++ 程序都有以下两个基本要素:程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 程序数据:数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。数据封装是一种把数据和操作数据的函数捆绑在一...
2019-05-05 15:29:05 794
原创 面向对象编程(五):数据抽象
C++数据抽象数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器),但是您不知道它的内部实现细节,也就是说,您并不知道它是如何通过缆线接收信号,如何转换信号,...
2019-05-05 15:27:10 583
原创 面向兑现编程(四):多态
C++多态多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。下面的实例中,基类 Shape 被派生为两个类,如下所示:实例#include <iostream> using namespace std; class Shape { ...
2019-05-05 15:25:22 146
原创 面向对象编程(三):重载运算符和重载函数
C++重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,...
2019-05-05 15:22:28 456
原创 面向对象编程(二):继承
C++继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了is a关系。例如,哺乳动物是动物,狗是哺乳动物...
2019-05-05 15:18:33 207
原创 面向对象编程(一):类&对象
概要C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。C++ 类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它...
2019-05-05 15:14:46 186
caffe安装配置文件Makefile.config
2020-10-19
PCA算法的原理C++ Eigen库实现
2020-04-16
C++PrimerPlus(第6版)_高清中文版_超详带书签
2019-04-23
OpenCV3编程入门_毛星云版
2019-04-08
QTTest(主要关于TCP和UDP传输)
2019-01-18
QPaintEvent绘制雷达扫描图
2018-12-26
OSG学习资料及视频PPT超详
2018-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人