- 博客(396)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注

翻译 Markdown——稀奇古怪的字母、符合组合
$\vec{a}$ a⃗\vec{a}a 向量$\overline{a}$ a‾\overline{a}a 平均值$\widehat{a}$ a^\widehat{a}a (线性回归,直线方程) y尖$\widetilde{a}$ a~\widetilde{a}a 颚化符号 等价无穷小$\dot{a}$ a˙\dot{a}a˙ 一阶导数$\ddot{a}$ a¨\ddot{a}a¨ 二阶导数X^2^ : X2a<sub>i1</sub>: ai1...
2020-08-16 19:03:58
915
原创 Pyqt5错误——AttributeError: ‘QWidget‘ object has no attribute ‘setCentralWidget‘
目录问题原因解决问题AttributeError: 'QWidget' object has no attribute 'setCentralWidget'原因我们在qt帮助文档查看setCentralWidget,可以发现它属于QMainWindow类的方法,并且是其类中单独定义的,故对于它的父类QWidget是无法直接调用的。void QMainWindow::setCentralWidget(QWidget *widget)解决将QtWidgets.QWidget() 改为 Q
2021-09-11 15:42:50
5140
翻译 C++ string总结
目录查找替换截断添加和删除字符串查找查找单个字符,参数str可以是字符串,里面的每个字符是或的意思,返回第一次出现字符的位置。find从pos(默认是是0,即从头开始查找)开始查找,找到第一个和str1相匹配的子串,返回该子串的起始索引位置;如果没有找到则返回-1。 size_t find (const string& str, size_t pos = 0)find_first_of说明:从pos(默认是是0,即从头开始查找)开始查找,找到第一个和str1相匹配的
2021-08-16 15:00:42
445
原创 cuda编程(一)——VS2017搭建编程环境
目录步骤步骤新建空项目2. 右键项目,打开“生成依赖项”的“生成自定义”,选择CUDA10.0.配置属性页面右键项目,打开属性,进入包含目录,输入:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\includeC:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\common\inc打开库目录,输入:C:\ProgramData\NVIDIA Corpo
2021-07-21 21:30:46
1463
1
原创 QT中数据类型的转换
原类型目的类型方法备注char*intint atoi(char *)<stdlib.h>char* aint bb = a - ‘0’ASCII 码值char *doubledouble atof(const char *s)<stdlib.h>char *QStringQString::fromLocal8Bit(char*)防止中文乱码intchar *char *itoa( int value, ch...
2021-07-21 09:53:43
486
翻译 C++调用python时传递中文字符串出现问题
目录传递参数中文问题解决传递参数参数传递类型参考官网说明创建一个元组PyObject *pArgs = PyTuple_New(3);PyTuple_SetItem(pArgs, 0, Py_BuildValue(“i”, 1));//0—序号 i表示创建int型变量PyTuple_SetItem(pArgs, 1, Py_BuildValue(“i”, 2));PyTuple_SetItem(pArgs, 2, Py_BuildValue(“s”, "fdsfds"));PyEval_
2021-07-04 11:58:36
1312
翻译 距离变换源码实现
目录前言原理源码效果前言有俩个坐标a(i,j),b(p,q)。欧式距离也叫DeD_{e}De,公式如下:De=(i−p)2+(j−q)22D_{e} = \sqrt[ 2]{(i-p)^2 +(j-q)^2}De=2(i−p)2+(j−q)2城区距离也叫D4D_{4}D4,公式如下:D4=∣i−p∣+∣j−q∣D_{4} = |i-p| + |j-q| D4=∣i−p∣+∣j−q∣棋盘距离也叫D8D_{8}D8,公式如下:D8=max{∣i−p∣,∣j−q∣}D_
2021-06-06 22:22:55
610
原创 Manim 安装
目录安装 Anaconda3安装 FFmpeg安装 Dvisvgm安装 miktex安装 Pycario安装 manim测试注意:一下安装的路径一定不要出现中文。不然可能会出现BUG。安装 Anaconda3具体安装配置及用法参考新建一个虚拟环境进入虚拟环境后续在此安装各种python库安装 FFmpegffmpeg(命令行工具) 是一个快速的音视频转换工具。进入网站链接,选择蓝色 win 标志, 点击第一个链接,进入下面画面下载。给FFmpeg添加环境变量,把下图路
2021-05-16 15:22:33
5308
3
翻译 qt5制作插件注意事项
目录.pro文件接口类插件功能头文件插件功能源文件插件新添ui文件.pro文件greaterThan(QT_MAJOR_VERSION, 4): QT += widgets#$$PWD 表示.pro文件所在的目录DESTDIR = $$PWD/bin # 用于指明编译的目标文件的输出路径# 引入opencv相关文件INCLUDEPATH+=E:\opencv3.4.7\opencv\opencv-build\install\includeLIBS +=E:\opencv3.4.7\openc
2021-05-14 12:14:43
376
翻译 Qt编译出现No rule to make target ‘../../../../opencv3.4.7/opencv/opencv-build/install/include/opencv2
问题:原因qt编译工程时候,所有用到的源文件包括头文件和库文件的,总路径长度不能超过190个左右字符,一旦超过,就会提示找不到那个文件。解决减少opencv的路径长度即可。
2021-05-11 17:06:20
644
原创 VS2017制作和使用动态库
目录制作动态库使用动态库动态加载动态库方式制作动态库打开VS2017,新建静态库项目2. 项目内删除无关文件,再新建一个头文件mydll.h3. 示例代码// mydll.h#ifndef MYDLL#define MYDLL#ifndef DLL_API#define DLL_API _declspec(dllexport)#else#define DLL_API _declspec(dllimport)#endif // !DLL_API//声明导出的函数DL
2021-04-29 22:53:26
1314
3
原创 VS2017制作和使用静态库
目录制作静态库使用静态库制作静态库打开VS2017,新建静态库项目项目内删除无关文件,再新建一个头文件mylib.h示例代码// mylib.h#ifndef MYLIB#define MYLIBint myadd(int a, int b);int mysub(int a, int b);#else#endif // !MYLIB// mylib.cpp#include "mylib.h"int myadd(int a, int b) { return
2021-04-29 20:28:12
654
原创 原码、反码、补码——有符号的编码方式
目录原码、反码、补码定义原码转反码、补码无符号编码方式无符号数和有符号数之间的转换位数的扩展和截断扩展截断数字原码、反码、补码定义我们都知道计算机实际存储都是一个个二进制数字,这些数字并不是杂乱无章的,计算机会根据一定的编码方式,进行一一映射。这里讲到的原码、反码、补码就是一种编码方式,特别的是,他们都属于有符号整数的编码方式。假设一个宽度为ω\omegaω的二进制x⃗\vec{x}x表示为:[xω\omegaω-1,xω\omegaω-2,…,x1,x0],下面定义下面编码方式的二进制如何转换
2021-04-27 20:11:08
1235
翻译 C++——多线程(原子操作std::atomic)
目录引入背景利用互斥量解决利用原子操作解决原子操作优点和局限性引入背景下面的代码中,我们利用两个线程来对同一个变量count进行++操作。我们知道,当多个线程同时对共享数据进行读或写操作时,会发生一些难以预料的事,这里虽然不会出现异常,但最后的结果并不是我们想要的。理论上最后的结果为200000,但实际上是远小于这个值的。#include <iostream>#include <thread>using namespace std;void mythread(int
2021-04-22 22:41:55
1495
翻译 C++——多线程( async、future、shared_future、packaged_task、promise)
目录引入背景async、futurestd::asyncstd::future小例子std::packaged_taskstd::promise引入背景如果想实现在主线程中接收子线程的返回值,或者实现子线程之间的信息传递问题,这时候也许就会用到future对象。使用这个对象需要引入相关头文件。#include <future>我们会使用future对象来接收子线程的返回结果,并利用其成员函数get()来获取具体值。async、futurestd::asyncstd::a
2021-04-22 15:34:12
477
翻译 C++——多线程(condition_variable、wait、notify_one、notify_all)
目录引入背景condition_variable、wait、notify_one配合使用引入背景下述代码,如果容器有一段时间一直为空,我们需要一直循环判断容器是否为空,这样有些耗费资源。有没有一种方式,使得容器为空时,这条进程就先睡眠,等容器不为空时,系统再告诉我,然后睡醒继续干活。#include <iostream>#include <mutex>#include <thread>#include <vector>using names
2021-04-21 18:25:59
913
1
翻译 C++——多线程(单例模式及共享数据解决方式)
目录设计单例模式多线程下共享数据问题解决方式改进解决方式利用C++11新特性——std::call_once()设计单例模式作用:一个类只能实例化一个对象。#include <iostream>using namespace std;class singleClass {private: singleClass() {} //使得该类无法调用构造函数进行初始化 static singleClass *myinstance;public: static singleClas
2021-04-21 15:32:49
1589
翻译 C++——多线程(unique_lock(类模板))
目录unique_lock出现背景灵活性体现unique_lock所有权的传递unique_lock出现背景在绝大多数情况下,使用lock_guard已经够了,且其效率更高。之所以引出unique_lock,是因为它的灵活性更高,在某些复杂的场景下,也许会使用到它。下面使用unique_lock替代lock_guard。#include <iostream>#include <thread>#include <vector>#include <
2021-04-21 11:53:05
350
翻译 C++——多线程(互斥量概念及用法、死锁及解决方式)
目录引入互斥量背景互斥量(mutex)如何保证lock和unlock成对出现——lock_guard类模板死锁演示死锁解决死锁std::lock()函数模板std::lock_guard函数模板引入互斥量背景我们知道,线程之间是共享数据内存的,那么一块内存如果在同一时刻同时进行读取和修改,就会造成一个十分混乱的局面,到时系统崩溃。如下面一段代码:两个线程分别在共享数据vector容器内进行存取操作,一旦存取在同一个内存地址进行,就可能出现异常。#include <iostream>
2021-04-20 19:39:59
939
翻译 C++——多线程(传参注意事项)
目录传递临时对象查看线程id坑一坑二小注意点传递类对象、智能指针类对象智能指针传递成员函数指针传递临时对象查看线程idstd::this_thread::get_id();坑一这里的参数传递与一般情况下不同,常见的不管是值传递还是引用传递,他都在将参数对象复制拷贝一份给子线程。即参数传递前后的内存地址并不相同。#include <iostream>#include <thread>using namespace std;class Myclass {publ
2021-04-20 14:16:32
1055
翻译 C++——多线程(认识并开启简单线程)
目录概念线程创建、启动、结束创建三种方式join()detach()思考代码概念可执行程序Windows以exe结尾的文件,Linux是拥有可执行权限x的文件。进程一个运行的可执行程序就叫一个进程。线程每个进程(执行起来的可执行程序),都有唯一的一个主线程。主线程随着进行开启,自动开启。除了主线程外,还可以在主线程中创建多条子线程,每创建一个新线程,就可以在同一时刻,多干一个不同的事。并发两个或者更多的任务(独立的活动)同时发生(进行)实现手段:1、
2021-04-19 17:53:15
2505
翻译 VS2017——无法打开程序数据库xxx\vc1401.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS
目录问题解决附加问题:断点无效问题解决右击项目,点击属性,执行下面三步:“C/C++” --> "常规” -->”调试信息格式” 设置为 “C7 兼容(/Z7)”“C/C++” --> "代码生成” -->”启用字符串池” 设置为 “是(/GF)”“链接器” --> "调试” -->”生成调试信息” 设置为 “是(/DEBUG)”附加问题:断点无效Debug > Options > General > 将 “
2021-04-19 15:40:42
4296
翻译 C++STL——容器适配器(stack、queue、priority_queue)
目录介绍stackqueuepriority_queue介绍C++标准库中提供了三个容器适配器:stack(栈)、queue(队列)和priorityqueue(优先队列)。这三种容器适配器提供了简单易用的接口,满足了编程中的特殊数据处理需求。stackstack中的元素具有后进先出的特点。stack只能从一端插入、删除、读取元素,不允许一次插入或删除多个元素,且不支持迭代器操作。#include <iostream>#include <vector>#inc
2021-04-17 18:55:48
277
翻译 C++STL——序列容器(vector、deque、array、list、forward_list)
目录介绍vectordequearraylistforward_list介绍序列容器(Sequence Containers)也叫作顺序容器,序列容器各元素之间有顺序关系,每个元素都有固定位置,除非使用插入或删除操作改变这个元素的位置。特点可以在容器一端添加、删除元素序列容器有连续存储和链式存储两种存储方式顺序都是由程序设计者决定的vectorvector容器与动态数组相同,在插入或删除元素时能够自动调整自身大小,即vector容器能够自动处理存储数据所需的空间。特点
2021-04-17 17:46:55
592
翻译 C++STL——关联容器(set、multiset、map、multimap)
目录关联容器set、multisetpair类模板map、multimap关联容器序列容器中元素的顺序都是由程序设计者决定的,程序设计者可以随意指定新元素的插入位置,而关联容器的所有元素都是经过排序的,即关联容器都是有序的。它的每一个元素都有一个键(key),容器中的元素是按照键的取值升序排列的。关联容器内部实现为一个二叉树,在二叉树中,每个元素都有一个父节点和两个子节点,左子树的所有元素都比父节点小,右子树的所有元素都比父节点大。STL提供了四种关联容器,分别是set、multiset
2021-04-17 12:56:23
234
翻译 C++——IO流
目录简介ios类库streambuf类库标准I/O流——iostream预定义流对象cincout标准输出流put()write()标准输入流get()getline()read()ignore()gcount()peek()文件流文件流对象的创建文件打开和关闭文本文件的读写二进制文件的读写文件随机读写字符串流简介I/O流类库是C++标准库的重要组成部分,它主要包括ios类库和streambuf类库。其中,ios类库提供流的高级I/O操作,streambuf类库主要负责缓冲区的处理。ios类库
2021-04-15 13:31:25
642
翻译 C++ ——异常处理
目录try.....catch.......栈解旋标准异常静态断言try…catch…C++的异常处理通过throw关键字和try…catch语句结构实现。通常情况下,被调用的函数如果发生异常,就通过throw关键字抛出异常,而函数的上层调用者通过try…catch语句检测、捕获异常,并对异常进行处理。try{可能出现异常得代码块}catch(异常类型1){... //异常处理块}catch(异常类型2){... //异常处理块}catch(异常类型3){... //异常处理块
2021-04-14 18:53:01
194
原创 QT小Demo——自制Q群聊天室
目录简介TableWidgetQTextStreamQDataStreamUDP网络编程简介github源码一个简易的模拟Q群聊天的小Demo。TableWidget这里在线聊天界面右侧的在线用户是使用TableWidget呈现的,通过这个控件可以方便的统计人数以及xxx是否在其中。参考QTextStreamQTextStream是一个非常强大的类,它可以对IO设备,QString,QByteArray等类进行方便的读写操作。在文本流中,QTextStream重载了两种运算符以
2021-04-13 21:51:38
539
1
翻译 QT——QTableWidget
目录TableWidgetQTableWidget常用方法和属性QTableWidgetItem常用方法TableWidgetQTableWidget 是 Qt 中的表格组件类,表格的第 1 行称为行表头,用于设置每一列的标题,第 1 列称为列表头,可以设置其标题,但一般使用缺省的标题,即为行号。行表头和列表头一般是不可编辑的。其单元格数据是QTableWidgetItem的对象来实现;构造QTableWidget的对象// 第一种tableWidget = new QTableW
2021-04-13 21:02:32
652
原创 QT小Demo——翻转金币小游戏
目录音效加载动画演示场景切换方式图片按钮生成项目打包github源码这是一个金币翻转的小游戏,一共20关,每一关的胜利条件是将所有银币翻转成金币即可。音效加载将所有音效配置成qt资源文件在项目pro文件中加入multimediaQT += core gui multimedia导入两个头文件#include <QSound> #include <QMediaPlayer>QSound用于加载并播放wav文件,QMediaPlayer用于
2021-04-11 21:27:54
676
3
翻译 QT——使用github
目录下载git bash登录github配置git bash设置用户名和邮箱生成密钥github上配置密钥信息配置Qt Creator的git设置上传代码参考1 参考2 参考3下载git bash下载地址:git登录github注册账号新建一个仓库配置git bash设置用户名和邮箱打开git bash,输入git config --global user.name "用户名"git config --global user.email "密码"生成密钥
2021-04-11 14:31:05
1444
翻译 QT——绘图事件
目录绘图事件基本绘图绘图高级设置手动调用绘图事件绘图设备绘图事件QT自带的绘图事件如下,一般需要我们自己重新实现它。[virtual protected] void QWidget::paintEvent(QPaintEvent *event)基本绘图#include <QPainter>void MainWindow::paintEvent(QPaintEvent *ev){ //实例画家对象,参数是指定绘图设备 QPainter painter(this);
2021-04-08 13:13:26
2733
翻译 QT——事件分发器、事件过滤器
目录简介事件过滤器简介当事件对象创建完毕后并不是立即被执行了,QT会将这个事件对象传递给首先传递给QObject的event函数,event函数并不直接处理事件而是按照事件的类型来分配给不同的事件处理器.(比如:mousePressEvent(QMouseEvent* ev))。如果该函数返回true那么表明该事件已经被处理过了.对于其他我们不关心的事件,我们则是直接调用父类的event()函数再次进行分配。bool MainWindow::event(QEvent *ev){ if(e
2021-04-06 15:46:15
322
翻译 QT——定时器
目录定时器方法一——QObject类开启单个定时器开启多个定时器定时器方法二——QTimer类Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。建议使用后者更为方便。定时器方法一——QObject类开启单个定时器步骤开启定时器startTimer(1000);//1秒间隔重写timerEvent方法void MainWindow::timerEvent(QTimerEvent *ev){ static int nu
2021-04-06 13:12:45
506
翻译 QT——自定义封装控件
目录步骤步骤新建项目在项目右击,Add New,选择下图所示,即可生成三个文件给smallwidget添加控件将smallwidget控件添加到mainwindow.ui内由于smallwidget是一个QWidget类型,所以先在mainwindow.ui移入一个widget容器,然后右击选择提升为,将类名输入即可。5. 运行即可看到效果...
2021-03-31 12:06:47
458
原创 QT——调用Python脚本
目录环境执行Python脚本c++中调用Python脚本常遇到的坑环境Win10Qt Creator 4.8.0 (Enterprise) MSVC64_bitAnaconda Python3.7 64_bit执行Python脚本将Python集成到Qt中工具->选项->环境->外部工具,添加->添加目录 (双击可任意更改名称这里更改为RunPy)->添加工具(双击可任意更改名称这里更改为Python3)。点击Python3,配置执行档、参数等配置:执
2021-03-29 15:58:18
7392
5
原创 QT小Demo——正则化匹配
目录功能正则化匹配次数中的贪婪与非贪婪功能在待匹配的字符框内输入一串字符,然后在匹配模式下输入正则表达式,键盘敲击Enter即可在下方显示匹配结果。上图有一个下拉框,提供了三个例子。正则化转义字符作用\r, \n代表回车和换行符\t制表符\s匹配任意空白字符\S匹配任意非空白的字符\d匹配任意数字\D匹配任意非数字\w任意单字字符(字母、数字或下划线)\W任意非单字字符\b单词的边界\\\本身
2021-03-27 17:05:07
832
原创 表格小技巧总结
目录建议添加序号将1用“男”替换互换某两列位置设置单元格大小建议为了避免排序出现合并单元格大小不一样,不要进行单元格合并,用增加列宽替代它。添加序号选定某列,写入**=row()**,最后ctrl + enter.将1用“男”替换锁定那一列,隐藏其他列,按ctrl + F ,选择替换即可。互换某两列位置选定一列,把鼠标放在选框边界线上。然后按住shift和鼠标,同时拖动鼠标移至目的列,最后放开即可。设置单元格大小...
2021-03-26 11:04:58
181
原创 QT小Demo——计算圆面积
目录功能要点正则表达式事件过滤源码功能输入圆的半径,输出圆的面积。输出结果,即可输出面积在半径框中敲击Enter键盘。也可以输出面积半径框中进行相应的字符检查,不能出现字母且必须是合法数字要点正则表达式Qt的QRegExp类是正则表达式的表示类indexIn函数//返回第一个匹配的位置,如果没有匹配则返回-1int QRegExp::indexIn(const QString &str, int offset = 0); //offset为-1,则搜索从最后一
2021-03-24 23:12:24
357
翻译 QT——QPointer模板类
QPointer类是一个模板类,是为了QObject提供的一种监视指针。普通C++与QPointer指针声明方式区别如下:普通C++指针声明方式 T* p1;p1的引用对象如果被销毁,p1则不会自动指向NULL,而是会变成野指针。危害:当p1引用别的对象A,而这个对象A在别的地方可能一不小心被销毁了,而p1还在指向这块内存,p1的值是没有变的,可是p1指向的这块内存已经不是以前的对象A了,这时候再调用p1就相当于变成了野指针,操作的时候会引起不可预测的风险。QPointer指针.
2021-03-18 20:30:06
439
opencv3.4 windows64
2020-10-11
kaggle冰山船舶卫星图数据集
2020-08-04
flower_photos.7z
2020-08-01
HCNA认证必备资源——腾讯微云
2020-04-11
云服务器ubuntu配置文件
2019-01-12
直方图修正方法的研究
2019-01-11
图像的基本运算及应用研究
2019-01-11
数字图像处理课设——图形界面设计
2019-01-11
夜间防睡控制器
2019-01-11
急问·python中的函数文档
2017-07-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人