- 博客(52)
- 资源 (6)
- 收藏
- 关注
原创 Qt:自定义信号变量类型
// 1. 定义变量类型 struct User_STRUCT // 预测结果 { // ...... }; // 2. 在定义后面添加声明(告知所有用到该信号变量的对象) // 建议1、2、3 放在一个头文件,供所有类包含 Q_DECLARE_METATYPE (User_STRUCT) // 3. #include<QMetaType> // 4. 注册信号 // 4.1 自定义类 qRegisterMetaType<User_STR.
2022-05-30 09:13:55 704
原创 Qt:窗口事件传递顺序
1. 事件从 子控件 冒泡往上传递在窗口中添加一个按钮控件 btn;在 btn 类和窗口类都重载 enevt() 事件// 控件重载bool XPushButton::event(QEvent * ev){ if (ev->type() == QEvent::MouseButtonPress) { qDebug()<< "Child event: QEvent::MouseButtonPress"; return false;
2022-05-08 20:25:19 1649 1
原创 Qt:UI交互 - 改变配置内容 - 窗口标题 + * 号
1. 按指定格式设置窗口名称 // QWidget::setWindowModified: The window title does not contain a '[*]' placeholder setWindowTitle(tr("%1[*]").arg("Untitled"));2. 在设置改变时,设置窗口已修改 setWindowModified(true); setWindowModified(false);...
2022-05-06 10:43:39 1071
原创 Qt:创建菜单/右键菜单
// 重载窗口的函数 contextMenuEvent (上下文菜单) void contextMenuEvent(QContextMenuEvent *event) override; // 在实现中添加右键菜单 void MainWindow::contextMenuEvent(QContextMenuEvent *event) { addAction(new QAction(this)); addAction(new QAction(this)); addA.
2022-05-06 09:56:40 305
原创 深度学习中关键字的含义
参考backbonebackbone 骨干网。在神经网络中,尤其是CV领域,一般先对图像进行特征提取(常见的有vggnet,resnet,谷歌的inception),这一部分是整个CV任务的根基,因为后续的下游任务都是基于提取出来的图像特征去做文章(比如分类,生成等等)。所以将这一部分网络结构称为backbone十分形象,仿佛是一个人站起来的支柱。主干网络,用来做特征提取的网络,代表网络的一部分,一般是用于前端提取图片信息,生成特征图feature map,供后面的网络使用。通常用VGGNet还有你
2022-03-04 17:10:52 224
原创 PyTorch bug 总结(持续更新)
附加参考Bug1: libtorch C++ 部署时遇到,编译通过,运行报错UserWarning: Named tensors and all their associated APIs are an experimental feature and subject to change. Please do not use them for anything important until they are released as stable.解决办法: 这是 pytorch1.9 的bug,
2022-03-04 09:52:06 1887
原创 PyTorch + Conda
Python 安装 torchPyTorchJupyter notebook 切换不同的环境切换到对应的 conda 环境,安装 Jupyter kernelsconda install nb_conda_kernels
2022-02-23 15:57:36 1138
原创 C++ 多态的实现
参考链接重点了解几个关键词早期绑定 与 迟绑定虚表 与 虚表指针从内存与编译器两个角度来理解多态的实现虚表为类的静态表编译器为每个类的对象提供一个虚表指针,这个指针指向对象所属类的虚表。在程序运行时,根据对象的类型去初始化vptr,从而让vptr正确的指向所属类的虚表,从而在调用虚函数时,就能够找到正确的函数。正是由于每个对象调用的虚函数都是通过虚表指针来索引的,也就决定了虚表指针的正确初始化是非常重要的。换句话说,在虚表指针没有正确初始化之前,我们不能够去调用虚函数。
2022-01-07 20:33:29 1378
原创 InfluxDB 查询 - 时间段 - 数量 - 设定时区 - QT
以下参考:链接 QDateTime localDate = QDateTime::fromString("2018-12-11 10:40:00", "yyyy-MM-dd hh:mm:ss");//输入的时间 QDateTime utcDate = localDate.toTimeZone(zone);//拿到的是0时区的当前时间 QDateTime currentTime = QDateTime::currentDateTime();//当前时区的当前时间 QDateTime changeLoc
2021-12-20 14:56:16 3238
原创 InfluxDB post 带参数插入数据格式
参考官方文档:Line ProtocolQString InfluxdbAPI::execNonSelect(const QString & url, const QByteArray &body){ // 设置请求 头部 QNetworkRequest req(url); // 请求行 // http 不关心数据传输的细节,规定C/S的数据传输格式 // 设置数据编码格式, // application/x-www-from-urlencod
2021-12-20 11:32:08 629
原创 Qt启动/杀死外部进程
参考1启动外部线程主要有:QProcess ::execute() 阻塞主进程的方式打开(静态成员);QProcess ::start() 以主进程的子进程的方式打开(父子);QProcess ::startDetached() 以隔离的方式打开;(1) QProcess ::execute() 方法 QProcess::execute("C:\\Environment\\influxDB_1_5_2\\influxd.exe")(2) QProcess ::start(
2021-11-25 17:27:41 4341
原创 Windows python 环境配置
python 安装pip 更新ipython 安装python常用模块安装numpy 数学库使用清华镜像 - pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple - pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
2021-11-23 11:26:03 629
原创 QString 使用注意事项
QString::IsNull() 和 QString::IsEmpty() QString str; // str is null, and is empty str = ""; // str is empty, is not null (存有一个字符串末尾的0,至少占一个字节)QString::toInt() QString strNum = QString::number(1.44); int num = strNum.toInt(); // 结果 num == 0 !!!QS
2021-07-28 16:51:45 322
原创 Qt Opencv 环境配置
1 Opencv安装及Path配置(略)2 Qt 调用实例说明新建一个Qt的控制台程序用作测试在.pro 文件中增加环境配置在.cpp文件使用Opencv函数2.1 .pro 包含目录 (头文件目录)// 实际根据自己opencv的安装目录INCLUDEPATH += C:/opencv2_4_13/opencv/build/include2.2 .pro 库目录(依赖目录 / lib目录)LIBS += -LC:/opencv2_4_13/opencv/build/x64/
2021-04-22 12:10:00 294
原创 图论相关:Tarjan
关于 Tarjan 求强连通分量 搜了几个帖子,虽然已经讲的很详细了,但是还得自己琢磨一下,于是消化后做个笔记。参考链接:1. 休伯利安矿工、2. 我。。。我是谁?几个基本概念连通:无向图中,从任意点i可以到达任意点j;强连通:有向图中,从任意点i可以到达任意点j;弱联通:把有向图看成无向图,从任意点i可以到达任意点j; 在有向图中成为强连通分量的条件较为苛刻 所以引入强连通分量这个概念强连通分量:局部区域强连通Tarjan 求强连通分量几个计算强连通分量的时候会用到的工具:ve
2021-01-15 11:35:47 131
原创 几种路径的获取
// 获得文件夹路径1void CDemoDlg::OnBnClickedButton1(){ CString strFilePath; BROWSEINFO bi; bi.hwndOwner = NULL; bi.pidlRoot = CSIDL_DESKTOP; //文件夹的根目录,此处为桌面 bi.pszDisplayName = NULL; bi.lpszTitle = NULL; //显示位于对话框左上部的提示信息 bi.ulFlags = BIF_
2021-01-11 13:54:08 270 1
原创 嵌入式开发 00 (基础概念)
指令集:本质是一组机器码不同硬件厂家设计的CPU的架构不同,这就使得让CPU完成同一功能的动作不同:比如说:mov操作,在x86架构的CPU上,执行的是 1010…,而在ARM架构的CPU上则是0101…(CPU只认识机器码)于是相同的一组功能:{1. 向左2. 向右3. 向上4. 向下5. …6. …}在不同的CPU上对应的机器码是不一样的,所以指令集就是将上述一组功能翻译成的对应CPU的机器码集合。每个硬件厂商都有自己的一套指令集,同样一个功能指令,为了提高效率、降低功耗,厂
2021-01-08 15:42:21 149
原创 MFC 坐标系统
参考:qingshuiyangfan DC::GetDeviceCaps(int Type) // 物理长度与屏幕像素间的转换 // 读取DC的一些打印区域信息,主要是像素和英寸方面的数据. // 使用例子: // 1. 获得显示器的总像素数 int pagecx = dc.GetDeviceCaps(HORZRES); int pagecy = dc.GetDeviceCaps(VERTRES); // 2. 计算每 100 个逻辑点对应的像素个数(这里的 100 指的是,用 dc
2020-12-29 20:11:02 294
原创 MFC 重绘(全)
WM_PAINT; 橡皮筋绘图 OnDraw(); Invalidate(); InvalidateRect(); UpdateWindow();
2020-12-28 16:42:47 297
原创 MFC 添加工具栏(全)
第1步:资源视图新建工具条(或者在原有工具条上增加)更改 ID增加悬停工具栏解释说明 tag, 具体为:选中工具栏某一格 》右侧属性 》 Prompt 》 写tag 内容,格式为 \n + 内容第2步:资源视图增加消息响应: 一种是手动添加 WM_COMMAND,手动 switch 消息;另一种是类向导直接添加...
2020-12-28 16:34:06 1381
原创 MFC 常用的几种绘图 DC
// 第 1 种: 需要手动释放 DC 资源 CDC * pDC = CWnd::GetDC(); CWnd::ReleaseDC(pDC); // 第 2 种: 自动管理 DC 资源 CClientDC::CDC // 派生关系 CClientDC dc(CWnd *); // 获得 客户区 DC // 第 3 种: 自动管理 DC 资源 CWindowDC::CDC // 派生关系 CWindowDCdc(CWnd *); // 能够获得完整窗口的 DC ,包括客户区和非客.
2020-12-24 10:34:02 295
原创 MFC 鼠标光标资源 及 更换
光标样式IDC_APPSTARTING // 标准的箭头和小沙漏IDC_ARROW // 标准的箭头IDC_CROSS // 十字光标IDC_HAND // Windows 98/Me, Windows 2000/XP: HandIDC_HELP // 标准的箭头和问号IDC_IBEAM // 工字光标IDC_ICON // Obsolete for applications marked version 4.0 or later.IDC_
2020-12-21 15:50:53 903
原创 MFC 修改窗体风格
在窗体创建之前修改BOOL CFrameWorkView::PreCreateWindow(CREATESTRUCT& cs){ // TODO: 在此添加专用代码和/或调用基类 BOOL bPreCreated = CView::PreCreateWindow(cs); cs.style &= ~(WS_HSCROLL); cs.style &= ~(WS_VSCROLL); return bPreCreated;}...
2020-12-18 09:41:11 286
原创 MFC 鼠标移入、移出窗口
转自:vigoss331首先,WM_MOUSELEAVE是鼠标离开窗口时发出的消息,但是这个消息与普通消息不同,要收到WM_MOUSELEAVE消息必须先调用 TrackMouseEvent 函数,并且每调用一次TrackMouseEvent窗口只能收到一次WM_MOUSELEAVE,也就是说如果要获得WM_MOUSELEAVE消息的话,当鼠标重新进入窗口时必须调用一次TrackMouseEvent。函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEven
2020-12-17 16:59:57 1716
原创 MFC 窗口分割(Dlg 为例)
1. 创建对话框工程2. 对话框类添加成员变量 CFrameWnd * m_pMyFrame; // 一个框架类对象(指针,也可以静态创建,注意命名!) // 在构造函数中 赋值 NULL // 在OnDestroy()中 delete 资源(动态创建) CSplitterWnd m_SplitterWnd; // 分割条对象3. 类视图添加两个 派生自 CFormView 的类此时资源视图会为这两个类自动添加对话框资源,可以手动在这两个对话框中添加
2020-12-08 14:18:42 1313
原创 MFC 文档视图学习 1
MFC - 菜单 / 孙鑫教程Q1:APP、CFrame、CDoc、CView 消息捕获的顺序测试:在资源中添加测试菜单右键菜单中的 Test 添加消息响应:依次为APP、CFrame、CDoc、CView都添加一个 OnTest(), 在消息响应函数中弹出一个 MessageBox() ,可以看到,消息最先被CView 拦截,如果注释掉CView的OnTest(), 然后被响应的是 CDoc,然后是 CFrame,最后是 APP。注意!APP 和 CDoc 不是从 CWnd 继承,没有
2020-12-07 20:14:08 181
原创 从 COLORREF 提取 R,G,B 值
COLORREF color =RGB(120,250,110); int r = GetRValue(color); int g = GetGValue(color); int b = GetBValue(color);
2020-12-02 14:11:05 401
原创 扉页制作
扉页制作创建一个MFC类CSplashWnd,基类是CWnd。然后自己找一张Bmp放在工程的res文件夹下,并在VS->资源视图->点击右键,添加资源,选择bitmap,令其ID号为IDB_SPLASH.然后CSplashWnd类的头文件和cpp文件如下:#pragma once// CSplashWnd.h class CSplashWnd : public CWnd{ DECLARE_DYNAMIC(CSplashWnd)public: CSplashWnd();
2020-11-30 21:05:15 549
原创 Opencv - Mat::at()
at() 访问图片像素值的时候,坐标要注意不要弄反了!Mat::at(x0, y0),中,x0 表示的是图片的行索引, y0表示的是列索引而 Rect.x 表示的是以左上角为原点的坐标值,实际上为列索引;Rect.y 则为行索引例如:Mat a = b(Range(), Range()); 中,第一个 Range 表示行区间,第二个表示列区间以下这段代码的执行结果及其是这样的 Mat test00 = Mat::zeros(5, 10, CV_8UC1); test00.at<ucha
2020-11-10 16:28:47 862
原创 Opencv 学习 - 视频操作
VideoCapture::get()VideoCapture::get(int id) id: ** CV_CAP_PROP_POS_MSEC // 视频文件的当前位置(以毫秒为单位)或视频捕获时间戳。 CV_CAP_PROP_POS_FRAMES // 接下来要解码/捕获的帧的基于0的索引。 CV_CAP_PROP_POS_AVI_RATIO // 视频文件的相对位置:0 - 电影的开始,1 - 电影的结尾。 CV_CAP_PROP_FRAME_WIDTH // 视
2020-11-10 14:23:07 643
矢量图形系统开发与编程_+Demo.rar
2020-12-02
ActiveX Control Test Container ,TstCon32.rar 方便 ActiveX 调试的小工具
2020-12-01
C++ 实现 暂停、继续、停止线程的线程类 和 Demo
2020-11-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人