- 博客(43)
- 资源 (31)
- 收藏
- 关注
原创 C++类型转换:隐式转换和显式转换
隐式转换当一个值拷贝给另一个兼容类型的值时,隐式转换会自动进行。所谓隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为。例如:short a=2000;int b;b=a;在这里,a在没有任何显示操作符的干预下,由short类型转换为int类型。这就是标准转换,标准转换将影响基本数据类型,并允许数字类型之间的转换(short到int, int到float, double到int…),到bool或从bool,以及一些指针转换。对于非基本类型,数组和函数隐式地转换为指针,并且指
2020-12-30 20:07:09 18861 4
原创 C++运行阶段类型识别(Runtime Type Identification)(C++新特性)
编译时开销编译器在编译代码时,主要进行:词法分析(识别单词,确认词类:标识符、关键字、字符串、数字等等)、语法分析(识别短语和句型的语法属性,生成语法树)、语义分析(确认单词,句型的语义特征,如加减乘除等)、代码优化和代码生成等。模板、类层次结构、强制类型检查等新特性,以及大量使用了这些新特性的STL标准库都增加了编译器负担。运行时开销C++中有可能引入额外运行时开销的新特性包括:虚基类 虚函数 RTTI(dynamic_cast和typeid) 异常 对象的构造和析构RTTI
2020-12-30 15:54:50 1864 4
原创 Qt中使用QSqlTableModel和QTableView实现与MySQL数据库的联动
连接MySQL数据库 QSqlDatabase sqldb = QSqlDatabase::addDatabase("QMYSQL"); sqldb.setHostName("localhost"); sqldb.setDatabaseName("patient"); sqldb.setUserName("root"); sqldb.setPassword("123456"); if (!sqldb.open()) { QMessageBo
2020-12-27 15:01:07 6446
原创 opencv使用findContours寻找物体轮廓
OpenCV中的findContours函数是用来检测物体的轮廓函数原型:CV_EXPORTS_W void findContours( InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point());/**
2020-12-26 19:57:28 2062 2
原创 opencv从文件中读取图片imread()函数以及Mat对象的复制方法
@briefLoadsanimagefromafile.@anchorimreadThefunctionimreadloadsanimagefromthespecifiedfileandreturnsit.Iftheimagecannotberead(becauseofmissingfile,improperpermissions,unsupportedorinvalidformat),thefunctionreturns...
2020-12-26 14:10:57 2781
原创 opencv形态学运算:腐蚀(erode)和膨胀(dilate)
形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有二种,他们是:膨胀与腐蚀(Dilation与Erosion)。膨胀与腐蚀能实现多种多样的功能,主要如下:消除噪声 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。 寻找图像中的明显的极大值区域或极小值区域 求出图像的梯度腐蚀和膨胀是针对白色部分(高亮部分)而言的。膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域; 腐
2020-12-25 22:43:11 8964
原创 opencv漫水填充算法floodfill
定义: 漫水填充算法是一种用特定颜色填充连通区域,通过设置像素上下限及连通方式来达到不同的连通效果。漫水填充经常用来标记或分离图像的一部分,以便于对其进行进一步的处理和分析。也可以从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。所谓漫水填充,简单来说,就是自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色。漫水填充算法是根据像素灰度值之间的差值寻找相同区域实现分割。我们可以将图像的灰度值理解成像素点的高度,这样一张图...
2020-12-25 21:34:54 1555 2
原创 opencv中Canny边缘检测算法
Canny算子canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法。更为重要的是 Canny 创立了边缘检测计算理论(Computational theory ofedge detection),解释了这项技术是如何工作的。Canny边缘检测算法以Canny的名字命名,被很多人推崇为当今最优的边缘检测的算法。其中,Canny 的目标是找到一个最优的边缘检测算法,让我们看一下最优边缘检测的三个主要评价标准:好的检测- 算法能够尽可能多地标识出图像中的实际.
2020-12-25 19:59:39 5752 1
原创 opencv阈值操作threshold以及图像二值化
[virtual slot] int QDialog::exec()Shows the dialog as a modal dialog, blocking until the user closes it. The function returns a DialogCode result.If the dialog is application modal, users cannot interact with any other window in the same application u.
2020-12-25 16:55:26 2745 2
原创 opencv使用霍夫圆算法HoughCircles进行圆检测
@brief Finds circles in a grayscale image using the Hough transform.The function finds circles in a grayscale image using a modification of the Hough transform.Example: :@include snippets/imgproc_HoughLinesCircles.cpp@note Usually the function...
2020-12-23 22:10:56 4866
原创 opencv模板匹配matchTemplate
模板匹配的原理模板匹配可以说是一种最简单的模式识别方法,它的实现主要是通过模板图像在被匹配图像中的平移,在被匹配图像中逐个区域寻找和模板图像相似的区域,如果存在某区域的相似度大于一定的阈值,则表明该区域和模板图像是相匹配的。但是模板匹配这种方式具有很大的自身局限性:首先它利用一个规定好的模板进行匹配,这就导致了想要匹配出来的结果必须在大小和角度上和模板图像一模一样,一旦原图像中的匹配目标发生旋转或大小变化,就会导致匹配准确率急剧下降。而且模板图像在原图像中进行移动的时候,只能够平行地上、下、左
2020-12-22 19:06:22 1412
原创 opencv仿射变换:平移,缩放和旋转
仿射变换原理仿射变换(Affine Transformation或 Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(即:直线经过变换之后依然是直线)和“平行性”(即:二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式。可以表示为线性变换和平移变换的叠加我们能够用仿射变换来表示
2020-12-22 14:52:42 3375
原创 opencv使用addweighted()实现两幅图融合相加
函数原型:CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1);/** @example samples/cpp/tutorial_code/HighGUI/AddingImagesTrackbar.cppCh
2020-12-21 20:19:34 2089
原创 opencv中常用的滤波方法:中值滤波、均值滤波、方框滤波、高斯滤波和双边滤波
图像滤波图像的滤波目的有两个:抽出图像的特征作为图像识别的特征模式; (特征提取) 为适应图像处理的要求,消除图像数字化时所混入的噪声; (去噪)图像的平滑处理:平滑滤波是指低频增强的空间滤波技术。主要目的是模糊和消除噪音;常用的5种图像平滑处理操作方法:1)方框滤波——boxFilter函数2)均值滤波——blur函数3)高斯滤波——GaussianBlur函数4)中值滤波——medianBlur函数5)双边滤波——bilateralFilter函数前三种都属于...
2020-12-21 17:30:57 2415
原创 使用opencv的cvtColor()函数进行色彩空间转换
opencv 的cvtColor()函数,用于在图像中不同的色彩空间进行转换(Converts an image from one color space to another),色彩模式决定了打印或显示的图片颜色。函数原型:CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );cvtColor()函数用于实现图像的色彩空间转换,一般包括四个参数,cvtColor(sr..
2020-12-21 15:24:44 4868
原创 C++opencv改变图片对比度和亮度convertTo()
改变图片的对比度和亮度可直接使用opencv库中的像素转换函数convertTo()。Mat MainWindow::imgProc(Mat myImg,float contrast, int brightness){ Mat imgSrc = myImg; Mat imgDst = Mat::zeros (imgSrc.size(),imgSrc.type ());//生成零像素矩阵 imgSrc.convertTo (imgDst,-1,contrast,bri
2020-12-21 11:21:54 1450
原创 Qt5.13.2中配置opencv4.5.0踩坑记录
目录cmake编译opencv时速度过慢或超时mingw32-make时报错错误一 [modules\core\CMakeFiles\opencv_core.dir\build.make:1494: modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj] Error 1错误二 [modules\core\CMakeFiles\opencv_core.dir\build.make:1708: bin/libopencv_co...
2020-12-19 22:46:43 7647 2
原创 MySQL数据库的事务开启,提交和回滚
事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。基于事务的原子性、一致性、隔离性和持续性特征,可以将相关的数据操作定义到一个事务当中。如果操作过程中没有发生异常情况,就提交事务(commit)如果发生了异常,就可以利用事务回滚(rollback),将数据库恢复到事务开启之前的状态。下面,通过一个小案例,演示事务的提交和回滚(重点在于回滚)。开启事务: begin; 提交事务:commit; 回滚:rollback;
2020-12-18 17:55:52 4514 2
原创 git笔记记录
打开文件: C:\Windows\System32\drivers\etc\hosts在hosts文件中添加:# GitHub Start 140.82.113.3 github.com140.82.114.20 gist.github.com151.101.184.133 assets-cdn.github.com151.101.184.133 raw.githubusercontent.com151.101.184.133 gist.git.
2020-12-18 17:31:27 130 1
原创 TCP和UDP的对比总结
TCP/UDP都是是传输层协议,但是两者具有不同的特性,同时也具有不同的应用场景,面向报文面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。面向字节流面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。T
2020-12-17 09:47:50 427
原创 Qt5.13使用MYSQL报错:QSqlDatabase: QMYSQL driver not loaded 解决办法
参考文章QMYSQL driver not loaded 原理及解决方案Qt: QSqlDatabase: QMYSQL driver not loaded在 5.12 及之前的版本中,Qt 的安装包中自带 MySql 驱动,在 plugins/sqldrivers 目录下可以找到,但到了 5.13 之后,MySql 驱动便没有了,这时我们可以选择手动编译。要编译 MySql 驱动,有两个前提条件:1.在安装 Qt 时,要一并安装源码(勾选“Sources”组件)。笔者这里使用的是5..
2020-12-16 16:33:41 961 1
原创 MYSQL的安装和配置
mysql配置安装教程注意事项:要在管理员权限下打开命令行窗口:常用命令:初始化:mysqld --initialize --console执行过后找到A temporary password is generated for root@localhost: 这句,localhost后面就是自己的初始化密码。启动服务输入net start mysql输入mysql -u root -p进行登录数据库,这时提示需要密码,然后就是用你上面的密码登录修改密码语句:ALTER US
2020-12-16 11:07:38 234
原创 C/C++预编译、编译、汇编和链接四个过程
目录一,预编译(预处理Preproceessing)二,编译(Compilation)词法分析语法分析语义分析代码优化代码生成三、汇编(Assembly)四、链接(Linking)C/C++编程的基本策略:用程序将源代码文件转换为可执行文件(其中包含可直接运行的机器语言代码)典型的C实现通过编译和链接两个步骤来完成。编译器把源代码转化成中间代码 链接器把中间代码和其他代码合并,生成可执行文件编译链接过程要细分的话要分解4个步骤:预处理、编译...
2020-12-15 21:15:59 3444
原创 C++类模板tuple(元组C++11)和pair的简单使用
tuple(元组)定义于头文件<tuple>,C++11特性;简介tuple是一个固定大小的异类值汇集,也就是说tuple是一个固定大小的不同类型值的集合,是泛化的std::pair。我们也可以把他当做一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体使程序更简洁,直观。std::tuple理论上可以有无数个任意类型的成员变量,而std::pair只能是2个成员,因此在需要保存3个及以上的数据时就需要使用tuple元组了。等价结构体str.
2020-12-15 16:17:51 726
原创 Qt5多国语言国际化及测试实例
Qt提供了一种国际化方案,而不是采用了INI配置文件的方式。Qt中的国际化方法与GNU gettext类似,它提供了tr()函数与gettext()函数对应,而返以后的资源文件则以“.qm”命名,且其国际化的机制与它的元对象系统密切相关。国际化支持的实现在支持国际化的过程中,通常在Qt中利用QString、QTranslator等类和tr()函数能够很方便地加入国际化支持,具体工作如下:(1)使用QString对象表示所有用户可见的文本。由于QString内部使用Unicode编码实现,所以它可
2020-12-15 12:17:07 737
原创 Qt5操作SQLite数据库实例
Qt操作SQLite数据库Qt提供了一种进程内数据库SQLite。它小巧灵活,无须额外安装配置且支持大部分ANSI SQL92标准,是一个轻量级的数据库,概括起来具有以下优点。(1)SQLite的设计目的是实现嵌入式SQL数据库引擎,它基于纯C语言代码,已经应用在非常广泛的领域内。 (2)SQLite在需要持久存储时可以直接读写硬盘上的数据文件,在无须持久存储时也可以将整个数据库置于内存中,两者均不需要额外的服务器端进程,即SQLite是无须独立运行的数据库引擎。 (3)开放源代码,整套代码少于
2020-12-10 17:55:45 1605
原创 数据库基本概念和常用SQL命令
数据库基本概念数据库(DataBase,DB),顾名思义,就是存放数据的仓库,其特点是:数据按照数据模型组织,是高度结构化的,可供多个用户共享并且具有一定的安全性。数据库管理系统(DataBase Management System,DBMS),是位于用户应用程序和操作系统之间的数据库管理系统软件,其主要功能是组织、存储和管理数据,高效地访问和维护数据,即提供数据定义、数据操纵、数据控制和数据维护等功能。常用的数据库管理系统有Oracle、Microsoft SQL Server和MySQL等。.
2020-12-10 15:09:52 874
转载 C++类的前置声明和头文件包含
一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,假设我们有两个类A和B,分别定义在各自的头文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的:class B;class A{ public: B b;};class B{ public: A a;};因为在A对象中要开辟一块属于B的空间,而B中又有A的空间,是一个逻辑错误,无法实现的,在这里我们只需要把其中的一个A
2020-12-09 21:25:47 1755
原创 操作系统中多线程的同步和互斥和Qt多线程
多个线程共享同一个进程的地址空间。所以线程间通信容易进行,但是多线程同时访问共享对象时需要引入同步和互斥机制。线程同步线程的同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。线程的同步是指在一些确定点上需要线程之间相互合作,协同工作。在访问同一个临界资源(互斥资源)时,两个线程间必须有一个先后顺序,因为临界资源一次只能供一个线程使用,如果两个线程都想要访问,这会形成死锁。举例:假如程序中有一个静态变量,stat
2020-12-09 12:01:53 473 2
原创 操作系统之原子操作
原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换。定义如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分。将整个操作视作一个整体是原子性的核心特征。在多进程(线程)访问共享资源时,能够确保所有其他的进程(线程)都不在同一时间内访问相同的资源。首先处理器会自动保证基本的内
2020-12-09 10:47:49 3918
原创 操作系统中的进程、线程和程序
进程进程概念狭义概念:进程就是一段程序的执行过程。广义概念:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活.
2020-12-08 18:10:08 516 1
原创 Qt消息机制:事件分发和事件过滤
目录图形界面应用程序的消息处理模型Qt中的事件处理(1)在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. (2)Qt平台将系统产生的消息转变成Qt事件(3) event()函数-事件分发(3)GUI应用程序的事件处理流程(4)事件(QEvent)和信号(SIGNAL)的不同图形界面应用程序的消息处理模型特点:基于操作系统才能运行 GUI应用程序提供的功能必须由用户触发 用户操作界面时操作系统是第一个感知的 系统内核...
2020-12-07 15:40:38 5509 2
原创 C++中类所占的内存大小以及成员函数的存储位置
类所占内存的大小是由成员变量(静态变量除外)决定的,虚函数指针和虚基类指针也属于数据部分,成员函数是不计算在内的。因为在编译器处理后,成员变量和成员函数是分离的。成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。所谓成员函数只是在名义上是类里的。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而我们访问类的成员函数是通过类里面的一个指针实现,而这个指针指向的是一个table,table里面记录的各个成员函数的地址(当然不同的编译可能略有不同的实现
2020-12-06 16:36:10 15646 17
转载 C/C++中的内存对齐问题
内存对齐的三条规则数据成员对齐规则,结构体(struct)(或联合(union))的数据成员,第一个数据成员存放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员(只要该成员有子成员,比如数组、结构体等)大小的整数倍开始(如:int 在 64bit 目标平台下占用 4Byte,则要从4的整数倍地址开始存储)结构体作为成员,如果一个结构体里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储结构体的总大小,即sizeof的结果,必须是其内部最大成
2020-12-06 16:06:05 502 1
原创 C++中类(class)和结构(struct)的区别
类描述看上去很像包含成员函数以及public和private可见性标签的结构声明,实际上,C++对结构进行了扩展,使之具有与类相同的特性。它们之间的唯一区别是:结构的默认访问类型是public,而类的默认访问类型为private。在C++中通常使用类来实现类描述,而把结构限制为只表示纯粹的数据对象(常被称为普通老数据POD(Plain Old Data)结构,)。C和C++中结构体的不同:C语言中的结构体不能为空,否则会报错C语言中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算
2020-12-06 15:00:14 12466 7
原创 C/C++中操作符sizeof和函数strlen()的区别
对于字符串,sizeof关注的是字符串所占的空间,strlen关注的是字符串的实际长度。strlen(char*)函数求的是字符串的实际长度,直到遇到第一个’\0’,然后就返回计数值,且不包括’\0’。1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’’\0’'结尾的。
2020-12-05 11:27:49 645
原创 C++中new/delete和malloc/free的区别和联系
类型不同new/delete是C++中的操作符,它调用的分别为赋值运算符重载operator new()和operator delete();void *operator new(size_t); //allocate an objectvoid *operator delete(void *); //free an objectvoid *operator new[](size_t); //allocate an arrayvoid *operator delete[](
2020-12-05 10:36:06 376 1
转载 TCP-面向连接的传输层协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。许多高层应用协议(包括HTTP、FTP)都是以它为基础的,TCP非常适合数据的连续传输。传输控制协议TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。主要特点:TCP是一种面向广域网的通信协议,目的是在跨越多个网络通信时,为两个通信端点之间提供一条具有下列特点的通信方式:基于流的方式;(流就是指不间断的数据结构)TCP不像UDP一样
2020-12-04 17:07:40 11871
原创 Qt5基于UDP的网络广播程序以及中文乱码问题
UDP服务端界面(发送端)UDP客户端(接收端)UDP服务端(1)在头文件“udpserver.h”中声明了需要的各种控件,其具体代码如下:#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QPushButton>#include <QVBoxLayout>class UdpServer : public QDialog{ Q_OBJEC
2020-12-04 16:01:00 1286
原创 数据结构之二叉树
树的一个节点拥有多少个子节点取决于树的类型,这个量值称为树的分支因子,它决定了当插入节点是,树的分支扩展速度。二叉树的分支因子为2。二叉树是一种将节点按照层次结构组织起来的数据结构,每个节点最多只有两个与它直接相关联的子节点。二叉树二叉树概念基本形态相关术语特殊类型性质二叉树的应用霍夫曼编码用户界面数据库系统表达式处理人工智能优先级队列二叉树的数据结构树的周游算法先序遍历中序遍历后序遍历层级遍历树的平衡二叉树概念基本形态二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:1、空二
2020-12-04 12:14:26 2083
基于LPC算法的语音基频检测C语言相关代码整理
2022-04-08
点云处理-PCL-常用PCD格式和PLY文件
2022-04-06
Silicon Test and Validation.pdf
2021-08-21
Shmoo Plotting _ The Black Art of IC Testing.pdf
2021-08-21
China-software-copyright-master
2021-01-06
cmake_opencv450_mingw73_64_编译生成的动态链接库文件_install.zip
2020-12-20
cmake_opencv配置所需文件.zip
2020-12-19
公共管理硕士(MPA)学位论文开题报告模板.zip
2020-11-19
南京理工大学硕士论文开题报告模板.doc
2020-11-19
基于LPC算法的语音基频检测及CCS软件使用教程.zip
2020-10-17
FPGA实验-AM.zip
2020-10-17
Velodyne-LiDAR-VLP-16-User-Manual.pdf
2020-10-08
VeloView-3.5.3.zip
2020-10-02
基于线性调频信号的脉冲压缩处理(源码和实验报告).zip
2020-10-01
SR12_CCS_v3.3_SR_3.3.82.13.rar
2020-09-23
南京理工大学研究生电子对抗大作业.zip
2020-09-15
南京理工大学电子对抗课件.zip
2020-09-15
南理工射频电子线路课程ppt.zip
2020-09-15
南理工无线通信课程课件.zip
2020-09-15
无线通信仿真代码MATLAB实现.zip
2020-09-15
MIMO-OFDM-Wireless-Communications-with-MATLAB.zip
2020-09-15
calculator_wav.zip
2020-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人