自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 Linux系统下OpenCV(c++)开发环境搭建

Linux系统下opencv(c++)开发环境搭建为了满足实际生产或者脱机运行的需要,搭建Linux系统下的Opencv十分必要,熟悉Linux系统下opencv的开发后,可以在树莓派等平台上进行相应工程的开发,在此,笔者分享一下linux系统下opencv(c++)开发环境的搭建。VMware+ubantu首先我们需要先搭建一个Linux的操作系统,Ubantu(乌班图)是一个以桌面应用为...

2019-07-19 10:38:44 15093 11

原创 均匀B样条和准均匀B样条

均匀B样条拟合和准均匀B样条拟合在CAGD中最为重要的无非就是B样条曲线,B样条在保留Bezier曲线优点的同时,克服了其由于整体表示带来不具有局部性质的缺点,以及解决了在描述复杂形状时带来的连接问题。B样条曲线按照节点矢量中节点的分布情况不同,可划分为如下4种类型:(a)均匀B样条曲线;(b)准均匀B样条曲线;©分段Bezier曲线;(d)一般非均匀B样条曲线。(1) 对于均匀B样条曲...

2019-03-20 11:14:06 15886 17

原创 激光光条中心的提取

激光光条的提取视觉测量在工业生产过程中应用广泛,针对复杂的环境下仅仅依靠相机对实际弓箭图像的处理和特征点的提取难以达到理想测量结果的现象,基于线结构光的视觉测量快速发展。在测量过程中,对于投射在物体表面的线结构光条纹中心的提取是整个测量过程的关键。在opencv中存在一些已有的API能够对投射在工件表面的激光进行提取,但并不准确。例如常用的一阶微分边缘检测算子:(1)Roberts算子,(2)...

2019-03-13 11:04:34 16254 53

原创 在空间三维坐标系下的圆、直线和平面拟合

前言上个学期,在做项目的时候遇到了许多需要拟合的情况。但是在网上寻找资料的时候大多是建立在二维空间的,在三维坐标系下的拟合较乱。因此在下面列举一些我所用到的直线拟合和圆拟合。空间圆拟合在二维空间中对圆的拟合较为简单,由初中的几何知识我们可以知道,确定一个三角形至少需要三个不共线的点,因此确定一个三角形的外接圆至少可用三个点。我们不妨假设三个点坐标为P1(x1,y1,z1),P2(x2,y2,...

2019-03-12 18:12:23 13241 8

原创 Qt中非阻塞延迟

在此记录一个Qt中的非阻塞延迟方式,用于再程序中做一些延时。

2023-08-10 10:36:52 203

原创 Qt主程序加载等待窗口

在此记录一个主程序加载等待窗口的小代码,以备不时之需。

2023-08-10 10:32:23 301

原创 c++获取指定区间的随机数

【代码】c++获取指定区间的随机数。

2023-08-01 12:18:14 241

原创 Qt中实现按钮长按一段时间后触发点击

在实际工况中,使用“按钮长按”的操作可以避免一些误触情况,这里简单记录一下一个按钮长按判定。假设qt中存在一个按钮 btn_SavePos。

2023-07-24 14:07:03 409

原创 在直线上找到给定距离的点

通过两点确定一条直线,通过给定距离,计算直线上某个点的坐标。

2023-07-14 17:15:50 114

原创 Qt中遍历某个控件

Qt中遍历某个控件。

2023-07-10 16:37:42 1169

原创 Qt 在循环中超时跳出

主要使用Qt的 QElapsedTimer 类,调用QElapsedTimer中的成员函数elapsed,统计流失的时间。常见的一个需求,在一段循环中,给定一个最大运行时间,当循环时间超出时,终止。常用于一些工控场合,对节拍有要求的项目,在此简单的做一个总结记录。...

2022-08-04 12:02:13 1083 1

原创 Qt获取文件夹下所有文件

Qt获取文件夹下的文件或子文件夹

2022-07-28 09:59:31 8446

原创 在qt中遍历QGridLayout的items

QGridLayout中的setEnabled()不能改变LayOut中的控件的状态,因此当我们需要遍历Layout中所有的子控件,并且做一些属性的更改时,可以使用如下方法:auto f = [](QGridLayout* layout) { int num = layout->count(); for (int i = 0; i < num; ++i) { auto item = layout->itemAt(i); if (item &&

2022-04-08 19:46:19 1661 1

原创 halcon中try catch的使用

在此简单记录一下halcon中try catch的使用halcon已经将一些函数的catch定义完成,我们仅需要合理的打印出来即可:try { HalconCpp::ReadImage(&textImage, "ooo.jpg"); } catch (HalconCpp::HException& exception) { std::cout << (const char*)(exception.ErrorMessage()) << std:

2022-04-08 19:42:45 1132

原创 Qt中QMessageBox::StandardButton的简单使用

在此记录一个常用的问答形式 qmessagebox的用法: QMessageBox::StandardButton result; result = QMessageBox::question(this, QString::fromLocal8Bit("重要信息"), QString::fromLocal8Bit("xxxxxxx?????"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No);

2022-03-19 17:29:49 1957 1

原创 QString和std::string的互转

在此记录一下QString和std::string的互相转化,主要真的是的包含有中的时的互相转化。QString转std::string #pragma execution_character_set("utf-8") QString qstr="你好 helloworld *&……%¥#@!"; QByteArray cdata = qstr.toLocal8Bit(); std::string cstr = std::string(cdata);std::s

2022-03-19 17:27:30 5030

原创 Qt中QPainterPath的布尔运算

重写一个label控件的paintEvent,QPainterPath中重载了运算符void myLabel::paintEvent(QPaintEvent* event){ QRectF rect = QRectF(100, 100,600, 600); QPainterPath path; path.addRect(rect); QPainter painter(this); QPainterPath path2; path2.moveTo(150

2022-03-16 16:38:13 284

原创 实时检测串口连接状态

废话不多说,在此记录一个实时检测串口链接状态的操作。struct SerialPortInfo{ std::string portName; std::string description;};std::string wstringToString(const std::wstring& wstr){ if (wstr.empty()) { return std::string(); } int size = WideCharToMultiByte(CP_ACP

2022-03-05 16:29:30 1943

原创 vector去除容器内重复元素

打开:QString FilePath = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("DXF File(*.txt) "));if (dxfFilePath == "") { return;}保存

2022-02-22 14:39:22 1405 1

原创 Qt 由字符串获取坐标

一般的,在日常使用中,通常默认将一个二维坐标表示为:(x,y)。在开发UI时,如果用户参照此格式输入坐标,可通过qstring的相关操作将此字符串转化为double类型:QString qstr = "(123.123,456.456)"; QString preQstr = qstr.section(',', 0, 0); QString afterQstrt = qstr.section(",", 1, 1); double x = preQstr.section("(", 1, 1).t

2022-02-21 12:16:31 655

原创 qmessageBox

在此记录一下一个常用的qmessageBox的应用QMessageBox::StandardButton result; result = QMessageBox::question(snapwindow, QString::fromLocal8Bit("标题"), QString::fromLocal8Bit("询问的一个事件??????????"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No); if (QMessageBo

2022-02-11 17:20:26 197

原创 QSettings的最简单使用

使用QSettings记录一些简单的配置,是开发过程中常用的操作。再次记录一下QSetting的简单使用。//向*.ini中写入QSettings* settings = new QSettings("test.ini", QSettings::IniFormat);settings->setValue("info", "hello world");delete settings;//获取*.ini中的某些数据QSettings* settings = new QSettings(

2022-02-09 09:23:12 213

原创 Mat转QImage

由于常常使用qt和opencv开发一些功能,在此记录一个使用频率很高的转换。cv::Mat类型的图像转换为QImageQImage Mat2QImage(const cv::Mat& InputMat){cv::Mat TmpMat;QImage Result;if (InputMat.channels() == 1){cv::cvtColor(InputMat, TmpMat, CV_GRAY2RGB);Result = QImage((const uchar*)(T

2021-11-28 14:18:57 2915 1

原创 Qt GDI绘图方法:

在上一篇博客中qt在视频上方添加透明窗体,写到了一种方法,能够简单避免qt控件遮挡第三方所显示的视频,但是那种方式实际上并没有从根本上解决问题。但是有的时候,使用Qt的GDI绘图,却能有奇效;在此简单记录一下qt GDI绘图的总结。以QLabel为例,重写QLabel的paintEngine(),使其返回值为空。对于需要GDI绘图的控件,在其构造函数中设置属性:setAttribute(Qt::WA_PaintOnScreen, true);获取该控件的句柄,DC:myLabel::m

2021-11-25 15:34:12 797

原创 Qt在视频上方添加透明窗体

在使用工业相机获取视频,或者其他设备获取视频时,为了保证效率,直接使用设备提供的sdk显示视频,能够最大限度地降低效率损失。减少了一些图像转换,数据传递的过程,但是这种情况也造成了另一个问题,第三方的显示窗口,我们无法直接进行修改。通常情况下,我们会想到在视频上方叠加一个控件,在该控件上做一些简单的绘图操作,或添加一些透明按钮,以达到想要的目的。但是事实上并不是这么简单。一般的,将widget或者label的句柄交出去,用其他的sdk直接显示一段视频(如相机自己的SDK),会出现遮挡状况。这种状况,

2021-11-24 17:09:01 2253

原创 c++读取TXT数据

常用的一个功能,读取txt中的数据,保存在自己定义的数组中:struct myPoint{ myPoint() {}; myPoint(const double &x,const double &y,const double& z) { this->x = x; this->y = y; this->z = z; }public: double x, y, z;};void MathGlClicked::loadDataFromTxt(

2021-11-14 15:57:58 1689

转载 二维图像坐标排序(转载)

转载:#include <vector>using namespace std;//对y方向上的点位进行排序bool SetSortRule(const Point p1,const Point p2){ if(p1.x < p2.x) return true; else return false;}//对x方向上的点位进行排序bool SetSortRule1(const vector<Point> p1,const vector&lt..

2021-10-20 17:37:31 820

原创 qt 文件拖拽事件的简单使用

小总结void SwitchDemo::dragEnterEvent(QDragEnterEvent* event){ //判断拖拽文件类型,文件名 接收该动作 if (event->mimeData()->hasFormat("text/uri-list")) { event->acceptProposedAction(); }}void SwitchDemo::dropEvent(QDropEvent* event){ if (!event-

2021-10-07 16:21:32 356

原创 Qt qlistWidget的简单使用

QlistWidget获取文件夹下所有文件名称,双击打开选中文件:#include "SwitchDemo.h"#include"QDir"#include"QMessageBox"#include<QTextStream>#include<iostream>SwitchDemo::SwitchDemo(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); QListWidgetItem* it

2021-10-07 11:07:44 728

原创 C++全组合算法

在此记录一下c++全组合算法。以备不时之需#include <iostream>#include <vector>using namespace std;//求长度为number的组合/* 参数: v:基础元素集合 cur_v:当前递归过程中的中间组合变量 cur_index:当前递归处理到v中第几个元素了 number:要求的组合的长度值 result:用于保存组合结果*/template<class T>void Com

2021-09-29 15:30:11 715

原创 使用vs2019编译QCAD

QCAD是一个开源的2维CAD项目。并且拥有Windows macOS以及linux跨平台的解决方案。该软件的通用交换格式是*.dxf文件,专业版的qcad也支持dwg格式文件。下面通过这篇博客详细记录一下visual studio2019+qt5.15.2编译QCAD的过程,以及编译过程中遇到的一些麻烦和解决方案:1.获取qcad源码QCAD的源码可以通过Git获取:链接如下:https://github.com/qcad/qcad ,下载qcad-master即可。 完成下载后解压。2.

2021-09-28 15:44:27 1708 2

原创 c++组合算法

#include<iostream>#include<vector>#include<algorithm>using namespace std;vector < vector < double >> combination( const size_t& choose, const size_t& from) { vector<string> res; string wk = string(choo...

2021-09-24 11:07:18 123

原创 Qt调用虚拟键盘(软键盘)

qt作为一个好用的Ui交互制作工具,怎么能缺少外部的IO设备。在一些应用场景,往往需要一个软键盘(虚拟键盘),闲话少说,直接上方案:1.首先托几个能输入的控件,外加一个按钮2. 写代码就完事了:#include "keyBoard.h"#include<windows.h>keyBoard::keyBoard(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); connect(ui.pushBu..

2021-09-11 16:05:55 4216 6

原创 OpenCV窗口显示在Qt的控件上

使用OpenCV打开一张图片是一件很简单的事情,并且显示出来也非常的轻松,简单到只需两行代码,这是因为OpenCV本身提供了一个Highgui模块,用来做图片的交互显示。#include<opencv2/opencv.hpp>int main(){ cv::Mat src = cv::imread("lena.jpg"); std::string winName = "lena"; cv::namedWindow(winName, cv::WINDOW_AUTO

2021-09-06 11:08:22 7054 12

原创 MathGL2.4+VS2019+Qt5 开发环境配置

--------By 九磅十五便士1. 什么是MathGLMathGL是一个能够应用在Linux和windows下高质量显示图形的开源库,通常应用与科学绘图或大型数组(矩阵)的可视化。同时MathGL内部也包含有诸多拟合函数,类似Matlab中的一些fitting功能。使用过程中仅需要一些样本数据点以及输入这些点的经验公式即可。但是依据...

2021-08-28 14:42:43 3003 11

原创 树莓派3B+安装c++版本opencv3.4.1,配置开发环境以及注意事项

树莓派3B+安装opencv3.4.1,配置开发环境以及注意事项树莓派3B+ ubuntu mate系统的安装树莓派,Raspberry Pi,是一个只有信用卡大小的微型电脑,其系统基于Linux,可作为一个便携式的开发平台,完成相应的科研和开发任务。ubuntu mate,是作为仅有的原生态支持树莓派,并且包含一个完整的桌面环境的发行版,相对于ubuntu桌面版,更加轻量化。对于树莓派3...

2019-07-26 18:05:13 4258

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除