
C/C++
文章平均质量分 60
dogdng
路虽远,行则至
展开
-
Qt教程(自学笔记)
Qt-常识Qt快捷键Qt笔记_进度条的两种实现方式Qt笔记_调试qDebugQt笔记_应用程序主窗口Qt笔记_界面Qt笔记_对话框Qt笔记_布局管理Qt笔记_信号和槽Qt笔记_事件Qt笔记_定时器事件与计数器Qt笔记_自定义部件和窗体Qt笔记_帮助Qt笔记_图像视图Qt笔记_状态机Qt笔记_QString类Qt笔记_输入输出Qt笔记_进程和线程Qt笔记_音视频播放Qt笔记_相机QCameraQt笔记_其他窗口部件Qt笔记_类型转换Qt笔记_动态链接库Qt笔记_2原创 2021-03-02 00:46:38 · 240 阅读 · 0 评论 -
GDB 调试
GDB 调试hello word开始调试查看具体某个类型中的命令命令的具体使用方式help小结hello word准备一份c++代码:#include <iostream>int main(){ int counter = 0; for(int loopIdx = 0; loopIdx < 6; loopIdx++){ counter++; std::cout << "counter is " << cou原创 2021-02-19 00:22:12 · 274 阅读 · 0 评论 -
Qt笔记_事件
事件Qt中使用一个对象表示一个事件,继承自QEvent类。任何QObject子类实例都可以接收和处理事件原创 2017-10-05 16:46:00 · 407 阅读 · 0 评论 -
Qt笔记_其他窗口部件
其他窗口部件1、QFrame类族带有边框的部件的基类。常用的子类:QLabel、QLCDNumber、QSplitter、QStackedWidget、QTooliBox、QAbstractScrollArea。 QAbstractScrollArea:所有带滚动区域的部件类的抽象基类。Qt中带有Abstract字样的类都是抽象基类1.1、QLabel用来显示文本或图片。wordWrap属原创 2017-10-01 20:30:13 · 311 阅读 · 0 评论 -
Qt笔记_状态机
状态机框架可以实现类似于小助手插件的效果。可以从一种状态切换到另一种状态。 参考 The State Machine Framework关键字 QApplication app(argc, argv); QPushButton button("State Machine"); // 创建状态机和三个状态,并将三个状态添加到状态机中 QStateMachine machine原创 2017-10-09 22:48:43 · 301 阅读 · 0 评论 -
Qt笔记_图像视图
图像视图、动画和状态机框架Qt提供了图形视图框架(Graphics View Framework)、动画框架(The Animation Framework)和状态机框架(The State Machine Framework)来实现更加高级的图形和动画应用。图形视图框架的结构使用QGraphicsScene场景、QGraphicsView视图、QGraphicsItem图形项替代以前版本的QCan原创 2017-10-09 16:23:13 · 445 阅读 · 0 评论 -
Qt常识
窗口部件Qt Creator提供的默认基类只有QMainWindow、QWidget(基础窗口部件)和QDialog三种。 QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,QMainWindow和QDialog都是继承自QWidget。 QWidget继承自QObject类和QPaintDevice类。 Qt中销毁父对象时会自动销毁子对象。断点调试 单原创 2017-09-29 21:34:43 · 435 阅读 · 0 评论 -
C++风格_异常
Google不使用 C++ 异常,这里也存在争议。。。 优点:异常允许应用高层决定如何处理在底层嵌套函数中「不可能发生」的失败(failures),不用管那些含糊且容易出错的错误代码(acgtyrant 注:error code, 我猜是C语言函数返回的非零 int 值)。 很多现代语言都用异常。引入异常使得 C++ 与 Python, Java 以及其它类 C++ 的语言更一脉相承。 有些第原创 2017-10-22 17:28:59 · 337 阅读 · 0 评论 -
C++风格_右值引用
只在定义移动构造函数与移动赋值操作时使用右值引用. 不要使用 std::forward.定义: 右值引用是一种只能绑定到临时对象的引用的一种, 其语法与传统的引用语法相似. 例如, void f(string&& s); 声明了一个其参数是一个字符串的右值引用的函数.优点: 用于定义移动构造函数 (使用类的右值引用进行构造的函数) 使得移动一个值而非拷贝之成为可能. 例如, 如果 v1 是一个原创 2017-10-22 17:21:47 · 206 阅读 · 0 评论 -
C++风格_引用参数
所有按引用传递的参数必须加上 const.定义: 在 C 语言中, 如果函数需要修改变量的值, 参数必须为指针, 如 int foo(int *pval). 在 C++ 中, 函数还可以声明引用参数: int foo(int &val).优点:定义引用参数防止出现 (*pval)++ 这样丑陋的代码. 像拷贝构造函数这样的应用也是必需的. 而且更明确, 不接受 NULL 指针.缺点: 容易引起误原创 2017-10-22 17:20:17 · 447 阅读 · 0 评论 -
C++风格_自增
对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.定义: 对于变量在自增 (++i 或 i++) 或自减 (–i 或 i–) 后表达式的值又没有没用到的情况下, 需要确定到底是使用前置还是后置的自增 (自减).优点: 不考虑返回值的话, 前置自增 (++i) 通常要比后置自增 (i++) 效率更高. 因为后置自增 (或自减) 需要对表达式的值 i 进行一次拷贝. 如果 i原创 2017-10-23 18:50:21 · 364 阅读 · 0 评论 -
Qt笔记_输入输出
输入输出输入/输出设备QIODevice类是所有I/O设备的基础接口类,为QFile、QBuffer、QTcpSocket等支持读/写数据块的设备提供了一个抽象接口。QFile类提供了用于读写文件的接口。一个文件可以使用open()打开,close()关闭,flush()刷新。文件的数据读写使用QDataStream或者QTextStream,也可以使用继承自QIODevice类的函数,例如re原创 2017-10-12 12:21:45 · 583 阅读 · 0 评论 -
Qt笔记_对话框
标准对话框1、颜色对话框 头文件: < QColorDialog > 使用QColor color=QColorDialog::getColor(Qt::green,this,tr("color dialog"),QColorDialog::ShowAlphaChannel);获取颜色; 参数分别是初始颜色、指定父窗口、设置对话框标题,显示设置透明度选项(可缺省)。 也可以使用创建对象的方法原创 2017-10-01 16:31:36 · 501 阅读 · 0 评论 -
Linux安装gtest
Linux安装gtest1 安装gtest采用源码安装的方式,需确保cmake已经安装。git clone https://github.com/google/googletestcd googletestcmake CMakeLists.txtmake将生成的两个静态库libgtest.a和libgtest_main.a和头文件目录复制到相应的目录下。PS:查找生成的库find . -name "libgtest.a"*sudo cp lib/libg* /usr/libsudo c原创 2020-08-05 01:56:08 · 2281 阅读 · 0 评论 -
Visual Stdio 中的error C2001: 常量中有换行符
error C2001: 常量中有换行符问题: 使用Visual Stdio,cout中文的时候,有的时候可以正常编译并运行,但是有的时候会出现error C2001: 常量中有换行符。出现error原因是中文的字数为奇数解决办法: 控制中文的字数为偶数 就可以了:D...原创 2019-11-06 15:45:52 · 1592 阅读 · 2 评论 -
获取数组长度
定义了一个整型数组,利用sizeof()获取数组大小时,发现得到的结果是原来的4倍。 因为一个int型数据,占4个字节,可以这样解决这个问题:1、使用sizeof(test)/sizeof(int)2、使用sizeof(test)/sizeof(test[0])原创 2017-10-14 16:19:00 · 404 阅读 · 0 评论 -
使用OpenCV读取视频和视频的相似性度量
使用OpenCV读取视频和视频的相似性度量目标当今,数字摄像设备是随处可见。因此,一定会遇到这样的情况:图像处理已经不能满足要求,而需要进行视频处理。这大致分两种情况:1、实时采集(对于网络摄像头)。2、预先录制的或存在硬盘里的视频文件。OpenCV使用相同的c++类以相同的方式处理这两种情况。这就是本教程要学习的内容:如何打开并读取视频流两种检查图像相似性的方法:PSNR和S...翻译 2019-04-15 22:43:43 · 2375 阅读 · 0 评论 -
C++常用的轮子
常用工具图像相关图像相关opencv,很强大,不赘述。stb 图像的读取与写入等简单操作,代码都在.h文件中,包含一个头文件与一个宏定义即可使用 https://github.com/nothings/stbCImg 与stb类似。简单,轻量。...原创 2019-05-16 15:57:22 · 1169 阅读 · 0 评论 -
visual stdio + openframeworks配置
visual stdio + openframeworks配置1、下载安装包2、 安装VS扩展3、新建项目不经意间发现一个很好玩的工具openframeworks,官网见:https://openframeworks.cc/zh_cn//1、下载安装包下载:https://openframeworks.cc/zh_cn/download/在下载界面已经有各个平台的详细安装指南了。2、 安...原创 2019-05-26 20:47:46 · 1624 阅读 · 0 评论 -
visual stdio 代码发布到GitHub
visual stdio 代码发布到GitHub1、安装插件2、添加源代码管理3、登录github4、发布1、安装插件工具->扩展和更新下载之后关闭VS,自动安装插件2、添加源代码管理点击VS右下角,添加到源代码管理3、登录github团队资源管理器中,单击发布到Github这里注意“专用存储库这个选项”,如果打钩,则发布的项目为 “Private”(PS:免费但是有限...原创 2019-07-20 15:33:12 · 676 阅读 · 0 评论 -
VS git 出现错误: rejected Updates were rejected because the tip of your current branch is behind
Q1:发布到远程存储库时遇到错误: rejected Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes before pushing again.正在推送 masterError: failed ...原创 2019-07-20 15:42:55 · 4580 阅读 · 0 评论 -
KMP算法
KMP算法KMP算法,以三个人名命名的一种算法。在字符串的模式匹配算法中,相比较暴力破解(Brute-Force)有较大改进,消除了主串指针的回溯,使算法效率有了一定程度的提高。KMP是一种很经典的算法,这里不再赘述。#include <iostream>#include <string>#include <vector>using namespa...原创 2019-03-30 21:32:42 · 304 阅读 · 0 评论 -
八皇后问题-递归求解
八皇后问题在国际象棋的棋盘上,按照国际象棋的规则,摆放8个皇后,使之“和平共处”。如图所示,在3-D上有一个皇后,则绿色区域中都不能再放置皇后了。最暴力的方法就是使用八个for,但是很明显,这种方法效率太低。对于放置了皇后的位置,仔细观察棋盘可以发现每一列(行)只能有一个皇后,每一个主(次)对角线上也只能有一个皇后,这样需要标记:行-row,列-col,主对角线-(n+row-col),次...原创 2019-03-25 15:40:29 · 8294 阅读 · 0 评论 -
计算字符个数
计算字符个数题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:输入一个有字母和数字以及空格组成的字符串,和一个字符。输出描述:输出输入字符串中含有该字符的个数。题目的意思应该是:先输入一串字符(可能包含空格),然后回车,再输入一个字符,回车。题里面并没有说明不区分大小写啊,提交之后才知道,既然区分,就...原创 2019-03-12 17:22:23 · 1496 阅读 · 0 评论 -
Qt笔记_定时器事件与计数器
书上写的定时器事件有两种方法,但是我觉得这两个“方法”并不是一回事。 一种方法实现的是定时器,而另一种方法实现的是计数器的功能,虽然这两种方法在效果上是一样的,但是从我以前学习硬件、嵌入式的角度看,这两种实现方式是有本质区别的。1、定时器事件使用QTimer定时器类Header: #include <QTimer> qmake: QT += core Inhe原创 2017-11-22 13:42:23 · 3976 阅读 · 1 评论 -
explicit
explicit原创 2017-10-05 20:45:34 · 406 阅读 · 0 评论 -
Qt笔记_正则表达式(regular expression)
手册里使用的词汇是 regexp 优点: 方便地完成字符串的一些处理操作,例如验证、查找、替换和分割等。类名称为QRegExp类,是基于Perl的正则表达式语言,支持Unicode。头文件:#include < QRegExp >//(尖括号中的空格是为了适应markdown而添加的,编程时不使用多余的空格)qmake:QT += core帮助文档中指出:All functions in原创 2017-11-19 15:11:22 · 9523 阅读 · 1 评论 -
贪心算法
贪心算法 格式说明:正体的字指教科书式的说法,斜体表示通俗理解贪心算法是通过做一系列的选择来给出某一问题的最优解。把判断放在循环里,每一步都是(在剩下的里面)选最好的设计算法步骤:1、将优化问题转化成一个先做出选择,再解决剩下的问题。指定初始的一个值2、证明原问题总有一个最优解是贪心选择得到的,证明算法是安全的。验证算法3、将子问题的最优解和贪心选择联合起来,可以得到一个最优解。将结果翻原创 2017-10-15 16:45:12 · 667 阅读 · 0 评论 -
插入排序算法
插入排序算法一个对少量元素进行排序的有效算法待排序的数也叫关键字(key)原创 2017-10-14 13:43:28 · 463 阅读 · 0 评论 -
Canny边缘检测
Canny边缘检测是多阶段优化的方法,该方法严格遵循以下三个准则: 1、高信噪比。这一准则说明好的检测效果要具有高的信噪比,对于图像的边缘要能够实实在在地检测到,对于图像中非边缘的部分,不能够被检测成边缘。 2、控制对边缘检测的精度。指算法所检测的边缘要尽可能的逼近实际的边缘,这是边缘检测算法的基本要求,检测精度直接反映了一个算法的好坏。 3、降低对同一边缘的相应次数。对于检测的图像边缘,应该原创 2017-09-24 10:36:03 · 1351 阅读 · 0 评论 -
使用Unicode字符集出现的错误总结
在使用Visual Stdio 较高的版本进行C/C++编程的时候,会涉及到字符集选择的问题,一般软件默认的是使用Unicode字符集,因为无论是从代码的通用性,还是程序的运行效率上讲Unicode字符集都比多字节字符集要强得多。但是由于现在的编程教材和“流传的代码”中都是基于多字节字符集来编码的。这就造成了直接改变工程属性中的字符集时,出现大量的错误。现在将我本人遇到的一些错误总结一下原创 2017-09-22 20:30:04 · 4407 阅读 · 0 评论 -
求逆矩阵的方法
一般求逆矩阵的方法有两种,伴随阵法和初等变换法。但是这两种方法都不太适合编程。伴随阵法的计算量大,初等变换法又难以编程实现。 适合编程的求逆矩阵的方法如下:原创 2017-07-13 10:27:52 · 20111 阅读 · 0 评论 -
柱面坐标变换
在图像拍摄点固定的情况下,对图像做柱面投影变换,再进行配准会得到较为理想的效果。如图所示,点P在相机所处的坐标系下的坐标为,在像素坐标系下表示为P(x,y),其中W 为图像的宽度,H 为图像的高度, f为相机的焦距。设相机中心为圆柱横截面的圆心,也就是相机坐标的原点,柱面坐标下的坐标为 。 原点与像素P(x,y)所在的直线方程表示为参数坐标的形式如下: 其中t为参数 联立得:原创 2017-07-26 21:40:13 · 10801 阅读 · 1 评论 -
Opencv之waitKey()
官方的解释,摘下来备忘 Waits for a pressed key.C++: int waitKey(int delay=0)Python: cv2.waitKey([delay]) → retvalC: int cvWaitKey(int delay=0 )Python: cv.WaitKey(delay=0) → intParameters: delay – Delay in m原创 2017-12-10 17:53:18 · 448 阅读 · 0 评论 -
Qt笔记_类型转换
1、char * 与 const char *的转换 char *ch1="hello11";const char *ch2="hello22";ch1 = (char *)ch2;2、char 与 QString的转换 char 转换为 QString 其实方法有很多中,常用的是:char a='b';QString str;str=QString(a);QString 转换为 cha原创 2017-11-23 21:08:06 · 630 阅读 · 0 评论 -
字符串最后一个单词的长度
字符串最后一个单词的长度题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。乍一看题很简单,而实际上,就是很简单[哭笑]这道题只有一个考点,应该就是C++如何输入带有空格的字符串。输入一般都会这样写:cin &gt;&gt; str;但是这样写遇到空格和回车都会停止,本题不能用这样的写法;...原创 2019-03-12 15:52:31 · 320 阅读 · 0 评论 -
Ubuntu下Qt编译opencv+配置(超详细)
Ubuntu 18 Qt5.12编译opencv3.41、准备1.1.确保正确安装Qt,并可以正常运行示例程序。1.1.1下载Qt1.1.2 安装Qt1.2 安装cmake1.3下载opencv2、编译2.1 载入opencv2.1.0解决编译中卡住的问题2.2配置编译2.2.1 CMake2.2.2 构建步骤2.2.3开始编译3、测试1、准备1.1.确保正确安装Qt,并可以正常运行示例程序。...原创 2018-12-22 23:21:50 · 6239 阅读 · 7 评论 -
C++头文件的顺序
C++头文件的顺序在同时使用opencv和Eigen库时会遇到数据的相互转换的问题,即使用eigen2cv()或cv2eigen()之类的函数,这时要注意一个隐藏的大坑,那就是**Eigen的头文件要放在opencv的头文件之前,否则会出错!!!**具体原因笔者没有深究,暂且mark一下,以后编程的时候也要注意:系统的头文件要放在最前面;其次是语言相关的;然后比较古老的第三方库头文件;...原创 2018-11-22 22:16:48 · 915 阅读 · 0 评论 -
Qt笔记_动态链接库
Qt程序加载动态链接库 加载动态链接库(windows下的.dll文件)的方式:1、静态加载动态链接库2、动态加载静态链接库3、非完整动态链接库1 静态加载动态链接库1)包括完整的头文件描述2)在.pro文件添加配置语句3)动态链接库的功能函数应为extern C标准格式。 这里的第三条可以忽略。1.1 配置.pr...原创 2018-09-16 20:26:15 · 2092 阅读 · 0 评论 -
C++文件和流
C++文件和流头文件 :#include &amp;lt;fstream&amp;gt;本例中声明的输入流和输出流ifstream inStream;ofstream outStream;要声明使用命名空间using namespace std;ifstream(读)、ofstream(写)以及fstream(可读可写)非别继承了istream、ostream以及iostream,并且继承了...原创 2018-06-25 15:30:04 · 884 阅读 · 0 评论