自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (2)
  • 收藏
  • 关注

原创 Qt里的信号与槽原理

​ 信号和槽(Signal & Slot)用于两个对象(object)进行交流,通俗地来说,就是一个对象发出什么信号,另一个对象执行相应的动作(比如跑步比赛中,裁判员发出枪响信号,运动员开始起跑)。信号(Signal):相当于发出一个事件通知。槽(Slot):槽其实是一个函数,为了响应信号而执行的一系列的指令。连接(connect):这个连接的过程,就是,我们指定什么样的信号执行什么样的槽函数。Qt里只有从QOBject派生来的类,才支持信号与槽。主要分为两类:1、Qt类自带的;2、用户自定义的。

2023-05-09 17:01:02 1899 1

原创 QJsonObject 类

QJsonObject可以转换为QVariantMap,也可以从QVariantMap转换。您可以从中查询具有size()、insert()和remove()项的(key,value)对的数量,并使用标准C++迭代器模式对其内容进行迭代。QJsonObject是一个隐式共享类,只要不修改数据,它就与创建数据的文档共享数据。JSON对象是键值对的列表,其中键是唯一的字符串,值由QJsonValue表示。QJsonObject类封装了一个JSON对象。

2023-05-07 00:00:29 1475

原创 QT里的网络通信简介

如果发生错误,serverError()将返回错误类型,并且可以调用errorString()来获得所发生事情的可读描述。尽管QTcpServer主要是为与事件循环一起使用而设计的,但也可以在没有事件循环的情况下使用它。TCP(传输控制协议)是一种可靠的、面向流的、面向连接的传输协议。包含了QObject的所谓的元数据,也就是QObject信息的一些描述信息:除了类型信息外,还包含QT中特有的signal&slot信息。公共函数:(继承的比较多,下面就介绍它自己的以及QAbstractSocket里的)

2023-04-23 18:10:02 2191

原创 windows下网络聊天室项目(C++、SQLite、计算机网络)——思路+源码+解析

2.在注册时需要设置用户名、密码、是否为管理员等信息(注意:这里需要在代码里设置一个结构体,来保存用户名、密码等信息,然后向服务器发送这些信息以注册,最后得到服务器反馈而来的注册成功信息,在注册成功之后需要返回刚开始的界面)4.普通用户界面(主要包含的功能有:查看当前在线人数、进入群聊界面、进入私聊界面、查看聊天记录、文件传输、更改密码、在线注销、退出等功能),这些功能主要通过向服务器发送请求,然后通过(前一步)分离的线程监听服务器得到。

2023-04-20 17:13:28 1800 2

原创 windows下网络编程与Linux下网络编程的区别

它允许应用程序或 DLL 指定所需的 Windows 套接字版本,并检索特定 Windows 套接字实现的详细信息。Windows系统:getlasterror()/WSAGetLastError()Linux系统:fcntl() (需要包含头文件<fcntl.h>)​ 阻塞等待客户端的连接请求accept()(阻塞函数)​ 阻塞等待客户端的连接请求accept()(阻塞函数)obj.Receive()或者obj.Send()obj.Receive()或者obj.Send()

2023-04-19 10:58:22 1063

原创 数据库开发(Sqlite)

它是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也高,但是它的同时访问客户端不能多于4个。MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,目前MySQL被广泛地应用在Internet上的中小型网站,具有体积小、速度快、成本低、开发源码的特点。二、添加、修改、删除行;在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。

2023-04-12 17:00:23 4335

原创 cmake、vcpkg工具使用介绍

然后在项目里找到ALL build,分别在debug和release下编译(选中ALL build,右键点击生成)(或者采取批生成方式,结果如下图),直到全部编译成功为止。vcpkg是c++第三方库管理工具,可以帮C++程序员快速的获取编译第三方库,一般C++第三方库需要手动编译,配置各种环境,例如OpenMVS,很多人基本编译不了。,cd到vcpkg目录,执行脚本bootstrap-vcpkg.bat得到vcpkg.exe,然后就可以使用vcpkg安装各种库了(哎,最近用这个没以前好使了)。

2023-03-31 22:51:28 1378

原创 CGI编程

(3)还有其他的一些格式:JIF(image/gif)、JPEG(Image/jpeg)、AVI(video/avi)(1)CGI程序通过标准输入(stdin)、标准输入(stdout)实现与web服务器信息的传递;2、CGI传送给Web服务器的信息可以用各种格式,通常是以HTML文本或者XML文本的形式。(2)环境变量为Web服务器和CGI接口之间约定的,用来向CGI程序传递一些重要的参数;cgi程序编译完毕后,必须要以.cgi作为可执行文件的后缀名。CGI测试案例1:测试CGI程序。

2023-03-21 16:50:56 1555 2

原创 AJAX使用

不是每一种状态改变都要处理,一般在readyState状态值为4,status状态值为200的时候,处理服务器应答,所以在回调函数里写一个判断,判断readyState为4,status为200,再做处理。通过JavaScript的XMLHttpRequest对象完成发送请求到服务器并返回结果的任务,然后使用JavaScript更新局部的网页;传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页面;浏览器是借助js与服务器通信的,js可以从浏览器获取数据,也可以更新浏览器的数据。

2023-03-21 11:35:49 295

原创 Javascript

对象是一种特殊的数据类型,拥有属性和方法,其中属性是指与对象有关的值;其中Javascript中的常用对象:浏览器对象Window、文本对象Document(HTML DOM)、内部对象Date、Math、String。Javascript是一种基于对象并具有安全性能的脚本语言,是由浏览器内解释器翻译成可执行格式后执行,在概念和设计方面,Java和Javascript是两种完全不同的语言。2、可以通过getElementById()方法,来根据对应的ID号去访问、控制HTML页面中的标签元素;

2023-03-20 10:48:36 627

原创 HTML语言

(2)通常是成对(开始标签,结束标签)出现的,比如 < b > < /b > ,< label >< /label >。b、选择列表< select > < option > < /option >< /select>外网:< a href = “http://www.baidu.com/” >< /a >5.文字标签(< b > < i > < u > < big > < small >…2、< meta >标签位于文档的头部,不包含任何内容;回到顶部:< a href=”#top ">< /a >

2023-03-18 10:03:41 2256

原创 BS模式开发之Web编程

Browser/Server(浏览器/服务器结构),是随着Internet技术的兴起,是对C/S结构的一种变化或改进的结构。​  JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。​  PHP(外文名:PHP:Hypertext Preprocessor),中文名:“超文本预处理器”)是一种通用开源脚本语言,语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。

2023-03-16 21:39:11 1000

原创 影像匹配基本算法(摄影测量)

根据影像匹配过程中匹配基元选择的不同,影像匹配方法可分为像方基元匹配和地面元匹配两类。像方基元匹配是以影像上的像元或特征(点特征、线特征、面特征)为待匹配基元,利用像方信息(灰度或特征向量等)进行匹配准则的定义与计算,在像方侧完成同名像点的搜索确定。像方基元匹配方法总体上可分为局部影像匹配方法和全局影像匹配方法两类。另外,对于局部或全局匹配方法得到的视差,通常还要进行视差优化处理,以滤除错误视差、填补视差空洞等。而地面元影像匹配是以已知物方平面坐标(X,Y)的地面点作为待匹配基元,影像匹配的目的是确定地面基

2022-11-26 10:25:20 8890

原创 原始套接字

原始套接字(SOCK_RAW)​ 1.一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心​ 2.可以接收本地网卡上所有的数据帧(数据包),对于监听网络流浪和分析网络数据​ 3.开发人员可发送自己组装的数据包到网络上​ 4.广泛应用于高级网络编程​ 5.网络专家、黑客通常会用此来编写奇特的网络程序

2022-10-22 17:29:08 3627

原创 Windows下TCP编程——服务器客户端代码以及爬虫示例

为什么Ieee浏览器能显示网站的照片等数据呢,是因为浏览器(客户端)给这个网站(服务器)发了一个请求,请求他的数据给我,这个网站服务器就将它的数据就发到我的这个Ieee上来,当然也能发到我写的程序。个人电脑上打了一个网址(www.xxxxxx),IE会生成一段码流(http协议的格式),服务器将请求的结果(网页源代码)返回给IE,IE拿了源代码之后,根据其中的链接,再去各服务器获取图片内容。而我们的爬虫就是模拟IEEE生成一段码流,发送给服务器我们的请求,服务器将请求的结果返回。

2022-10-20 11:37:21 2013

原创 网络通信过程

作为嵌入式工程师,需要对整个网络通信的过程进行掌握,从一个整体的角度来开发出更加稳定、效率的网络程序。

2022-10-19 16:37:44 890

原创 TCP编程详解

TCP回顾:​ 1.面向连接的流式协议,可靠、出错重传、且每收到一个数据都要给出相应的确认;​ 2.通信之前需要建立链接;​ 3.服务器是被动链接,客户端是主动链接

2022-10-18 16:55:32 2822 2

原创 Windows下UDP编程

2、windows下需要打开网络库/启动网络库ws2_32.lib,启动了这个库,这个库里的函数/功能才能使用。1、头文件不同:windows下仅需要导入头文件winsock2.h,而linux需要包含许多头文件;

2022-10-13 22:41:19 1470

原创 UDP编程——TFTP、广播、多播

TFTP:简单文本传送协议; ​ 最初用于引导无盘系统,被设计用来传输小文件; 广播:由一台主机向该主机所在子网内的所有主机发送数据的方式;多播:数据的收发仅仅在同一分组中进行,所以多播又称之为组播。

2022-10-12 17:51:16 869

原创 UDP编程详解

面向无连接的用户数据报协议,在传输数据前不需要先建立连接;目的主机的运输层收到UDP报文后,不需要给出任何确认。

2022-10-09 20:13:08 3171

原创 计算机网络编程基础

计算机网络编程基础

2022-10-06 11:27:40 1276

原创 结构光三维重建(一)条纹结构光三维重建

在近景三维重建领域,结构光技术可以说是应用最广泛的,尤其在工业领域。该技术目前具有高精度和无视弱纹理等优点,但复杂的室外环境还是会对该技术造成一定程度的干扰。目前用的比较多的结构光分别两大类:线结构光以及条纹结构光。接下来我先来简单介绍一下条纹结构光三维重建,事实上,条纹结构光的原理与双目立体匹配是非常相似的。...

2022-07-30 16:12:07 8086 2

原创 结构光三维重建(二)线结构光三维重建

在近景三维重建领域,结构光技术可以说是应用最广泛的,尤其在工业领域。该技术目前具有高精度和无视弱纹理等优点,但复杂的室外环境还是会对该技术造成一定程度的干扰。目前用的比较多的结构光分别两大类:线结构光以及条纹结构光。接下来我先来简单介绍一下线结构光三维重建。......

2022-07-29 17:06:25 6820 1

原创 机器人标定总结

工业机器人虽然重复定位精度很高,但由于绝对定位精度很低限制了工业机器人的应用,因此提高绝对定位精度能扩展工业机器人的应用范围。机器人可以将传感器安装在固定位置,具有固定的位置(eye-in-hand),也可以将传感器安装在机器人的手上,以便通过改变摄像头的视角来获取新图像(即eye-to-hand)。为了使机器人能够准确估计零件相对于其自身底座的三维位置和方向,需要知道机器手臂和其自身底座、相机和手臂以及相机与工件的相对位置和方向。这三项任务需要校准机器人、传感器和机器手臂对传感器(手眼)。...

2022-06-03 23:37:55 8442 3

原创 3D空间的几种变换方式

欧式变换欧式变换是最简单的3D变换方式,由旋转和平移组成。它保持了向量的长度和夹角,相当于我们把一个刚体原封不动的进行了移动或旋转,不改变它自身的样子。其矩阵表现形式如下所示:其中,旋转矩阵R为行列式为1的正交矩阵。t为平移矩阵。相似变换相似变换比欧式变换多了一个自由度,它允许物体进行均匀缩放,其矩阵表示为:注意,旋转部分多了一个缩放因子s,表示我们在对向量旋转之后,可以在x,y,z三个坐标上进行均匀缩放。由于含有缩放,相似变换不再保持图形的面积不变。仿射变换仿射变换的矩阵形式如下:与

2022-05-08 16:49:45 1334

原创 C++操作.json文件

1.JSON简介1.1 什么是JSON:JSON是一种纯字符串形式的数据,它本身不提供任何方法(函数),非常适合在网络中进行传输。JavaScript、PHP、Java、Python、C++等编程语言都内置了处理JSON数据的方法。JSON 是基于 JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集,是一种开放的、轻量级的数据交换格式,采用独立于编程语言的文本格式来存储和表示数据,易于程序员阅读与编写,同时也易于计算机解析和生成

2022-05-02 22:15:04 12166 3

原创 Qt在槽函数中执行耗时操作导致界面卡住

在Qt实战中,本来想将自己所用的算法写在对应的槽函数里,通过点击相关按钮触发信号,从而达到理想的效果。然而,函数的执行都是需要耗费一定的时间,耗时太长则会阻塞线程,在界面开发中,阻塞主线程时将会卡住,无法点击,例如在菜单栏中点击Structure From Motion来实现SFM功能,此时界面必然会卡住,直到Structure From Motion里的功能实现完毕。对于此类问题,可以使用创建线程的方式来解决,比如QThread,如果在Windows可以使用Createthread,std::thread

2022-04-28 12:38:40 4011

原创 基于图像的三维重建——基于空间patch扩散的方法(PMVS)

1.PMVS:多视图匹配经典算法简介导语:常见的稠密重建方法主要有三种:基于体素的方法、基于深度图融合的方法以及基于3D patch扩张的方法。第一种基于体素的方法仅适用于小场景,单个物体,遮挡较少的情况,不予赘述。第二种基于深度图融合的方法在前面已经介绍过:基于图像的三维重建——深度图计算方法1-SGM/tSGM(9)以及基于图像的三维重建——深度图计算方法2-PatchMatch(10),这两种都是通过计算得到的不同视角的深度图进行融合来获取稠密点云。而今天要介绍的就是第三种方法:基于3D patch

2022-04-24 17:28:57 2356

原创 前方交会与后方交会

1.前方交会1.1 前方交会的概念利用立体像对两张像片的内方位元素、同名像点坐标和像对的相对方位元素(或外方位元素)解算模型点坐标(或地面点坐标)的工作,称为空间前方交会。在摄影测量中主要有两种:1.利用立体像对两张像片的相对方位元素,计算模型点的三位坐标;2.利用立体像对两张像片的外方位元素,计算地面点的地面坐标。1.2 前方交会基本关系式要确定像点与其对应的模型点(地面点)的数学表达式,如上图所示,D-XYZ为地面摄影测量坐标系,S1 - U1V1W1及S2 - U2V2W2分别为左右像

2022-04-17 11:48:58 22853 3

原创 相对定向与绝对定向

1.相对定向在这里介绍相对定向是为了下一步的核线影像生成,主要讲解连续法相对定向,需要同名点坐标(特征匹配算法即可得到)。1.1理论知识  根据书上说的,确定一个立体像对两像片的相对位置称为相对定向。一般确定两像片相对位置有两种方法:其一是将摄影基线固定水平,称为独立像对相对定向系统;其二是将左像片置平或将其位置固定不变,称为连续像对相对定向系统。这两种系统选取了不同的像空间辅助坐标系,因为有不同的相对定向元素。相对定向的原理是同名光线对对相交于核面内。(这里不作赘述)1.1.1 连续像对的

2022-04-15 10:35:59 21312 8

原创 uint8_t图像数据类型介绍

0. C++基础类型介绍名称字节长度取值范围bool1false, truechar1-128 ~ 127signed char1-128 ~ 127unsigned char10 ~ 255short(signed short)2-215 ~ 215- 1unsigned short20 ~ 216- 1int(signed int)4-231 ~ 231- 1unsigned int40 ~ 232 - 1

2022-04-09 15:26:32 11049

原创 SIMD指令集分析(C/C++)

阅读代码的时候遇到了__m128i、_mm_set1_epi8、_mm_loadu_si128、_mm_max_epu8、_mm_min_epu8、_mm_store_si128、_mm_unpackhi_epi8、_mm_adds_epi16、_mm_srli_si128等SIMD指令集,所以想着作一个总结。0. SIMD基础知识SIMD是单指令多数据技术,目前Intel处理器支持的SIMD技术包括MMX、SSE以及AVX。MMX是MultiMedia eXtensions(多媒体扩展)的缩写,是

2022-04-06 15:41:26 10405

原创 Make与CMake

1.Make与CMake首先先来了解一下gcc,gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(包括C、C++、Objective-C、Fortran、Java等等)。当我们的程序只有一个源文件时,直接就可以用gcc命令编译它。但是当程序包含很多源文件时,用gcc命令逐个去编译时,就很容易混乱而且工作量大。所以就出现了Make工具。它是一个自动化编译工具,我们可以使用一条命令实现完全编译,但是需要编写一个规则文件,Make

2022-04-04 18:48:58 11004 2

原创 MPI学习

  前段时间学习了OpenMP,并且很容易地将其用到了实际应用中,但OpenMP也有很多缺点:所有线程共享内存空间,硬件制约较大;目前主要针对循环并行化。为了进一步了解并行计算,MPI是一个不得不接触的东西。它的优点有:无论硬件是否共享内存空间,都可以使用;与OpenMP相比,可以处理规模更大的问题;每个线程都有自己的内存和变量,这样不用担心冲突问题。MPI的缺点有:算法上经常有较大改动;较难使用;性能上会受到通信网络的影响。1.MPI简介MPI是一个跨语言的通讯协议,用于编写并行计算机,其支持点对点和

2022-04-02 10:29:29 3894

原创 重拾C/C++(面试用)

1.内存有哪几种类型C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。此外,C++中有自由存储区(new)一说。2.栈和堆的区别1)堆存放动态分配的对象——即那些在程序运行时动态分配的对象,比如new出来的对象,其生存周期由程序控制;2)栈用来保存定义在函数内的非static对象,如局部变量,仅在其定义的程序块运行时才存在;3)静态内存用来保存static对象,类static数据成

2022-03-29 23:02:18 1171

原创 Linux系统基础知识

1.Linux基础Linux概念:Linux是一个以Intel系列CPU(CYRIX,AMD的CPU也可以)为硬件平台,完全免费的UNIX兼容系统,完全适用于个人的PC。它本身就是一个完整的32位的多用户多任务操作系统,因此不需要先安装DOS或其他的操作系统(MS Windows, OS2, MINIX…)就可以进行直接的安装。Linux版本:其发行版本有Ubuntu、Centos、redhat、debian、opensuse等等;其中ubuntu注重界面,Centos注重服务器。其内核版本可以通过un

2022-03-28 21:58:41 22044 4

原创 异常处理总结

程序有时会遇到运行阶段错误,导致程序无法正常的运行下去。如下图所示:遇到这种问题我们一般都是断点调试或者单步调试。但是,如果有一个较大的循环,将会导致断点调试或单步调试很复杂,因此,学习必要的异常处理找出问题所在还是很有必要的。assert()函数编写代码时,我们总是会做出一些假设,断言assert就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。使用断言可以创建更稳定,品质更好且不易出错的代码。当需要一个值为FALSE时中断操作的话,可以使用断言。assert宏的原型定义在&

2022-03-25 16:32:54 598

原创 OpenMP并行编程

1.总览  OpenMP(Open Multi-Processing)是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,通过线程实现并行化,特别适合在多核CPU机器上的并行程序设计。编译器根据程序中添加的pragma指令,自动将程序并行处理,使用OpenMP降低了并行编程的难度和复杂度。当编译器不支持OpenMP时,程序会退化成普通(串行)程序。程序中已有的OpenMP指令不会影响程序的正常编译运行。OpenMP与P

2022-03-23 17:27:07 13013 3

原创 核线影像生成(摄影测量)以及极线校正(计算机视觉)

核线影像生成  《航摄影像密集匹配的研究进展与展望》一文中介绍:航摄影像的密集匹配可以对单个立体影像对、也可以对多度重叠的多视影像序列进行。在获得影像的内外方位元素或者影像的相对方位元素的前提下,实施过程大体分为核线影像生成、匹配代价计算、匹配代价聚合、视差计算与精华、三维点云生成几个主要步骤。其一般流程可描述为下图:  由上面的描述,我们可以知道,核线影像生成是航摄影像密集匹配的第一步,目的是利用核线相关的该概念将沿x、y方向搜索同名像点的二维相关问题转化为沿核线搜索同名像点。为了生成核线影像,需要

2022-03-21 17:10:23 11120 4

原创 CUDA C编程(三十九)将C程序移植到CUDA C的案例研究

评 估 crypt并 行 crypt优 化 crypt部 署 crypt多GPU的crypt混合OpenMP-CUDA Crypt

2022-03-20 22:10:04 1673

feature_exaction_and_matching.rar

基于Opencv440的特征点检测与匹配代码实现

2021-05-20

BAJacobian矩阵推导.pdf

雅可比矩阵推导

2021-05-01

空空如也

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

TA关注的人

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