自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫步者

漫步无境

  • 博客(121)
  • 收藏
  • 关注

原创 Qt触摸事件开发总结

在触摸设备中,触摸屏的触摸事件发送到系统中后,qt系统默认会将触摸事件转换为鼠标事件,但是这并不以为意味着触摸事件消失了,而是在系统中触摸事件、鼠标事件同时存在,如果某个控件打开了手势开关,那么系统将同时存在触摸事件、鼠标事件和手势事件。第一个问题,首先说qt系统中的触摸事件、鼠标事件和手势事件是否可以共存,答案是肯定的,默认情况下qt系统会将触摸事件(touch事件)转换为鼠标事件,也就是说。最近对触摸事件比较感兴趣,研究了一下触摸相关的事件,并在此进行整理,不准确的地方希望大家斧正。

2024-07-24 16:28:48 959

原创 ffpmeg之avformat_network_init和avdevice_register_all函数

如果利用ffpmeg库拉取视频流或者通过http协议打开视频文件播放,涉及到网络IO操作的,在应用程序之前首先需要调用avformat_network_init函数,该函数调用后就实现了对ffmpeg模块IO的一些初始化,后续就可以利用网络IO拉取视频流等功能。

2024-05-28 20:46:58 342

原创 libsndfile读取wav文件基本属性

本文的目的是提供一种方法读取wav文件的基本属性:音频帧数,格式、通道数和采样率信息。

2024-05-15 20:11:25 225

原创 libasound+libsndfile读取麦克风音频保存为wav文件

本文的目的是在linux下利用libasound和libsndfile库基于C++实现读取麦克风数据,并保存为wav文件。该程序编译通过后,运行该程序,可以实现录音。

2024-05-15 19:59:11 479

原创 Linux+qt实现界面输入的密码验证

有的时候有这样的情况,在qt实现的界面中输入了当前用户的密码,然后需要对该密码进行验证,找了好半天,有用的信息不多,很多都是一嘴带过,对于实现功能没有实际意义。另外一种是么有界面,需要在命令终端输入密码,实现密码验证。上面的代码中用户密码通过pam_conv结构输入,该结构两个参数,第一个参数是一个回调函数,该函数的大致意思就是定义了获取密码的一些行为方式,具体含义我也不太了解,但是通过自定义该回调函数可以自定义获取密码的方式,对于上面的自定义的函数就是从参数中获取密码。实现密码验证的基于pam模块。

2024-04-11 16:53:21 502

原创 dlib中rectangle与opencv的rect的区别

和 OpenCV 中的。

2024-03-31 13:59:17 575

原创 基于AES128的加解密方法

网络上有不少介绍利用AES对称加密的方法,要么就是讲述理论,要么就是加密过程比较复杂,本文介绍的一种比较简单的基于Botan的AES数据加密实现方法,侧重于应用,希望能给大家一些帮助和启发。可以通过源码编译也可以通过sudo apt-get install libbotan-2-dev进行安装,本人是通过源码编译安装的。平台:x86+银河麒麟v10 arm+银河麒麟v10。botan版本:Botan-2.19.4。

2024-03-30 16:24:51 354

原创 计算机视觉常用术语汇总

以人脸识别为例,表示的是输入图像时输入的是一张图像还是多张图像,如果输入的是一张图像,那么batch_size就为1;:也是用于表示两组向量相似度的比较,但是计算方法与欧式距离不一样,取值范围为-1~1,数值为0表示两个向量不相关,数值越接近-1表示两个向量越不相似;:这个术语的含义是将图像中的人脸经过旋转转到下巴垂直的地面的角度,这是通过图图像的矩阵操作实现的,例如一个人脸是歪着头的,经过这一步操作后,人脸部分会被旋转到垂直地面的方向。:检测是否为真人,或者是通过其他方式实现的家人,照片,面具等。

2024-03-27 22:00:19 348

原创 linux之source.list解析

众所周知,linux可以通过apt命令安装软件,那么apt又是从哪里获取软件包呢并安装呢?这里就绕不开一个文件source.list,该文件定义了软件源相关的信息。下面以实际例子,详细的介绍下这个文件。

2024-03-16 16:45:55 1647

原创 利用dlib实现人脸识别初体验

前面的文章中介绍了如何编译dlib静态库和动态库,那么下一步就是利用dlib完成一个最简单的识别图片中人脸的程序。下面将测试的环境、代码、遇到的问题、解决方法一一列出,供大家参考,希望能给大家一些帮助。解决方法:LIBS += -L/usr/lib/x86_64-linux-gnu -llapack -lcblas。解决方法:在pro文件中添加 LIBS += -L/usr/local/lib -ldlib。

2024-03-16 16:06:57 895

原创 linux下dlib静态库和动态库编译

本文讲述的linux系统下如何编译dlib的静态库和动态库方法。

2024-03-14 21:29:57 569

原创 python之内置函数

python在解释器启动时就加载到内存中一些函数,这些函数采用C语言实现,是python语言的核心部分,可以在任何地方使用,无需导入任何模块,这样的函数称为内置函数。这些内置函数包含很多种类,内置函数使用无需携带前缀,就类似c语言中的函数调用一样,通过函数名直接调用即可;与此不一样的是使用模块中方法如果不是import方法话,那么就需要携带模块名称。

2024-02-28 16:21:01 937

原创 python对象的理解

python中对象的概念是什么?,与c++中对象的概念一致,都是包含属性和方法。占用空间也不一样,c++下整型是基本数据类型,在一个64位bit系统上,占用空间大小为8个字节,而在python中则不然,一般在64位系统上一个整型占用的空间大约为28个字节。由此可以看出,python相对于c++/c来说,对于资源的占用肯定是多的,这也是为啥一般在嵌入式环境中不使用python进行开发的原因。因为吃资源。另外需要说明的在python中我们可能一般不太关注一个对象占用多少空间。但是。python对象3要素。

2024-02-27 19:21:55 673

原创 python中from import的用法详解

劣势是如果调用模块仅使用被调用模块一个对象或者很少的几个对象,则此种方法可行,但是如果调用模块使用了很多的被调用模块的下对象,此种使用方法就不太友好,因为要针对每个对象添加一句上文中的语句。无论是使用python还是c/c++开发代码时,不可避免的要使用到标准库或者第三方库,这个时候就需要在我们的py文件中调用库,而在python中一般是通过from和import的组合来实现加载第三方库包中的模块或者对象。from关键字可以修饰模块名称,也可以修改包的名称,修饰模块名称,则import导入的是对象名称;

2024-02-26 16:53:20 2994

原创 python加载模块

除了上面的两种情况外,还有一种情况是脚本依赖内部独立开发的模块,这种情况下应该如何导入呢?内部开发的模块与依赖脚本在同级目录,这种情况下无需做任何处理,直接import即可。内部开发的模块与依赖脚本在同级目录下子目录,这时候需要在子目录中添加__init__.py脚本,声明该目录是一个包,然后直接import接口,示例如下:上文中package是包名,module是模块名称。若脚本依赖的模块在其它目录,则需要通过sys.path.append方法告将该目录添加到模块搜索路径中。

2024-02-23 18:09:11 363

原创 python之如何启动一个应用程序

当一个脚本从标准输入或者解释器提示行中被读取时,模块的__name__属性就会被设置为__main__。当模块通过import方式导入时,则__name__属性是模块的名称,不会修改为__main__。由此可以得出,若要启动一个应用程序在一个脚本中加入类似的语句即可。python是c语言开发的,作为更高级的语言,肯定是也是参考c/c++的方式来启动程序。if后面的else可以添加也可以不添加,添加的好处是对于模块的一些自测代码可以考虑添加进去,这样通过else分支就可以实现对模块的功能的测试。

2024-02-23 17:40:12 645

原创 python名词解释

这个名词的对应的是__main__,它的含义是如果一个脚本通过标准输入执行,那么python解释器会将该脚本的名称属性__name__修改为__main__,包含如下代码中的逻辑就是会被执行,从而触发应用程序执行。一个文件夹下包含__init__.py文件的才叫包,否则就是普通的文件夹,对于包来说包中可以包含子包,子包也可以与模块平级,结构可以自由组合,例如如下所示。subpackage1---------子包。demoModule.py------模块。package ------包。

2024-02-23 17:18:28 285

原创 python基础常识介绍

说起python,很多朋友可能都接触过,实现过一些简单的功能。但是对python很多基础常识都有没有一个总体的概念。很多都是用一点,学一点。如果想对python这门语言有比较深入的学习和理解,只有刚才的程度是不行的,所以我的本意是通过开启这样一个专栏,将自己对python的理解和学习的过程记录下来,希望能对大家有所帮助。

2024-02-22 17:12:47 318

原创 linux之man帮助信息理解

在linux中我么经常通过man命令查看一些命令帮助信息,获取对应命令的使用方法和介绍。上面的命令中包含了很多符号,例如[] {} | 。上面很清楚的表示了 DIRECTORY这个字段就是必填项。

2024-02-22 15:52:48 320

原创 opendds之GUID理解

首先需要搞清楚的是就是GUID一共有16个字节,其中前12个字节的含义是GUID的前缀;后4个字节表示的是entity的类型和id。如上所示,标红部分所示的就是GUID,刚开始看到也是很头疼,经过分析源码终于搞明白了这个GUID的含义下面进行详细的介绍。上面的图非常清晰的将各个字节的含义介绍清楚了。

2024-01-24 20:45:53 501 1

原创 c++之new(std::nothrow)的作用

new type():这是最普通的用法,这也是大家都能看懂的用法.,此种用法用于创建type类型的对象,例如;new type[n]:创建一个数组对象,每个数组元素的类型都是type,例如;new type*[n]:创建一个指向数组对象的指针,这样返回的是一个二级指针,例如;new (std::nothrow) type:内存申请失败,不报错,并返回NULL。

2023-12-12 21:40:58 700

原创 Qt编译报错“munmap_chunk(): invalid pointer”

,很是疑惑,从字面意思上看指针操作有问题,但是经过排查,未发现指针有非法操作,而且现象是调用一个函数,执行完该函数最后一行后崩溃。后面经过确认原来是该函数没有返回值,因为该函数原型是。但是为什么会报这个错误我也搞不太清除。qt工程修改编译后报错信息是“

2023-12-09 11:23:46 521

原创 ffmpeg编译问题

产生这个报错简单的是就是依赖库未包含,就是说未指定依赖库的路径和和依赖库名称,这个通过LIBS关键字就可以解决如果确定LIBS等类似的方式已经指明依赖库的路径和依赖库名称,还是有这个报错,那么确认下是否是C++代码调用了C语言的库,如果属实,那么就是用extern "C"关键字包含C库的头文件。

2023-12-09 10:57:06 1265

原创 OpenDDS之名词概念介绍

无论是自己还是其它朋友在研究opendds源码或者开发手册的时候,往往会朋友一些专有名词,看上去后不明所以,或者对其真实表达的意思不透彻,似是而非的感觉。本文对我自己对这些术语的理解进行解释,希望对大家有所帮助。

2023-12-07 20:54:45 416

原创 网络通信之网卡配置ip

可以肯定的是在windows操作平台下一个网卡可以配置多个ip,在windows下通过图像界面找到高级选项既可以添加ip。那么在linux如何对一个网卡配置不同网段的ip呢?如果不添加冒号及后面的数字,则会修改蓝色部分的ip地址;如果网卡名称后面添加了冒号即数值,那么就会是红色部分的显示。loop txqueuelen 1000 (本地环回)今天突然想到,一个网卡可以配置几个ip?这下大家明白了,~~~~~~~~~~

2023-12-07 20:33:52 1279

原创 Linux之rsync免密登录

在做项目的过程中有同步文件的需求,经过考察后选择了rsync作为同步文件工具,但是默认情况下rsync同步文件需要手动输入密码,由于同步文件功能是在程序中实现的,无法手动输入密码,所以必须免密输入。通过查询找到了一种免密输入的方法,先记录如下:步骤一:执行ssh-keygen命令,注意这个命令要在执行rsync同步命令的机器执行,结果如下:y步骤二:执行ssh-copy-id命令,将生成的文件拷贝到服务器,即要从哪台机器下载,拷贝到哪台机器。

2023-12-07 10:19:25 710

原创 c++ 函数模板详细介绍

在使用函数模板时,如果不清楚相关的规则,将模板中的类型全部显式的声明出来,肯定不会产生错误。如果调用参数的类型都可以类型推导,可以不声明任何参数类型如果模板参数中存在不能通过类型推导判断模板类型的,那么必须要将该模板参数前面的模板参数包括该模板参数显式的声明出来。

2023-12-05 20:28:20 985

原创 ffmpeg的基本功能介绍

最开始对ffmpeg的印象是可以对视频进行一些处理操作,但是做哪些操作又不是很清楚,知其然不知其所以然。下面对于ffmpeg的功能进行一个总结,希望对大家有个帮助。之前对ffmpeg有一个模糊的印象,后来经过一些项目对ffmpeg有了深入的认识,这里总结下。ffmpeg编译完成后会生成3个可执行文件。

2023-11-02 19:47:00 627

原创 gdb调试命令汇总

2、gdb ,调试程序,该种用法一般用于查询程序的崩溃时的调用栈。3、gdb attch ,一个程序正在执行,可以通过该命令通过gdb对一个正在执行的程序进行调试。i r==(info reg==i reg):查看寄存器,只有在调试时该命令才有效果。bt:查看当前线程的调用栈,也可以配合thread 查看各个线程的调用栈。help:gdb帮助信息,如要查看指定模块的帮助信息,输入。thread (或者t ):切换线程。

2023-11-02 14:18:33 180

原创 gdb获取调用栈的两种方式

在程序运行中出现异常,可以通过gdb以运行的方式调试程序,这里列出一个,1、首先启动gdb2、进入gdb执行页面后,输入file ./执行程序名称,这个命令将会将程序加载到内容中3、输入r命令,运行程序4、若程序崩溃,则输入bt命令查看调用栈。

2023-11-02 10:08:53 1073

原创 Qt之模块介绍

Qt 是一个强大的跨平台 C++ 框架,它包括了很多核心模块和功能,以支持广泛的应用程序开发。然而,Qt 为了保持核心库的稳定性和性能,并尽量减小库的体积,不会将所有功能都包括在标准库中。相反,Qt 使用模块化的方法,允许开发者根据自己的需求选择要包含的模块。总之,Qt 的模块化设计和轻量化方法允许开发者根据需要选择适当的功能,以满足他们的应用程序需求。例如qt提供而来qtmqtt模块,但是该模块并没有加入到标准库中,如有需要,需要从github下载该模块编译后添加到指定位置,然后可以使用,其他模块类似。

2023-10-14 17:33:02 377

原创 Qt之submodule编译

通过这个问题我们学到了什么呢?1、系统默认的安装你的qt并不是完整的,有些模块默认并没有安装2、单独编译子模块时,需要执行一些命令将编译qt过程中的一些依赖项安装一下,例如安装qtbase5-private-dev。

2023-10-14 15:58:11 1526

原创 linux下读取socket相关的系统调用总结

第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0或者以下组合:MSG_DONTROUTE:不查找路由表,是send函数使用的标志.这个标志告诉IP协议.目的主机在本地网络上面,没有必要查找路由表.这个标志一般用网络诊断和路由程式里面MSG_OOB:接受或发送带外数据,表示能够接收和发送带外的数据.

2023-10-11 21:20:09 638

原创 网路通信之校验和

在网络通信中由于通过信道进行传输,信道传输可能会受到磁场,光电等因素影响,造成传输的数据发生变化,例如11100变成了11101,在这种情况下数据的意义可能会产生完全不同的意义,那接收方如何保证收到的数据与发送方发出的数据一致呢?答案是校验和,通过计算数据块的校验和接收方可以知晓数据是否发生了变化。

2023-10-11 17:01:37 182

原创 linux之cpu模拟负载程序

由于我的环境cpu有8个核,若指定cpu占有率的为70%,则每个核的cpu占有率为70%,总的cpu占有率为70%,所有的cpu核占有率综合为560%左右(70%*8)。工作中我们经常会遇到这样的问题,需要模拟cpu的负载程序,例如模拟cpu占有率抬升10%、20%、50%、70%等,那这样的程序应该如何实现呢?它的原理是什么样的呢?可以看到cpu各个核的cpu占有率均在70%以上,综合的cpu占有率也是79%,各个核的cpu占有率总计为520.9基本与预期相符,达到预期目的。占用固定cpu占有率的程序。

2023-10-11 15:33:53 711

原创 Linux之epoll理解

IO多路复用有几种实现方式:select poll和epoll。本篇文章对epoll进行总结理解。IO多路复用的含义,我个人的理解是通过一个线程实现对多个socket的侦听,epoll与select和poll的区别是epoll效率最高。。,这也是epoll应用于高并发的场景的原因所在。epoll是一种IO事件通知机制。epoll是IO多路复用的一种实现方式,也是目前主流的高并发实现方案。

2023-10-07 20:02:53 209

原创 linux之eventfd理解

在阅读fdbus源码的过程中涉及到了eventfd,这块不是很熟悉,特此记录一下。在linux下一切皆文件,每个文件都都对应一个fd(file descriptor文件描述符),要理解eventfd,就需要对fd的类型有一个认识,fd也是有类型的,我们都知道socket fd,也知道pipe fd,timer fd,同样也有eventfd这样一种类型。

2023-10-07 16:33:07 612

原创 linux本机进程间通信之UDS

本机进程间通信有很多方式,百度有太多的文章来介绍相关,大致有消息队列、共享内存、socket等、这里重点介绍下socket(套接字)的一种用法,一般情况下在socket是用于不同主机间的通信,但是当通信双方在同一台主机上该如何利用socket进行通信呢?。

2023-10-07 14:50:57 795

原创 fdbus之事件循环及线程关系

但是我是从消息发送的代码去分析的,在消息接收流程里没有找到与该CThreadEventLoop事件循环有关的东西,反而是在CFdEventLoop中找到了消息接收的代码,从代码看又是冲突的,搞混淆了,目前位置还是没有搞明白消息循环接收是如何实现的。CBaseWorker是一个线程类,需要在该线程类类实现对事件循环。

2023-09-28 15:04:50 552 2

原创 fdbus之消息接收流程

若找到匹配的消息则进行处理,通过该序列号找到原始消息请求方的消息对象指针,最关键的部分来了,每个session对象都包含一个指向收到消息的指针mPayloadBuffer,该指针指向的内存每收到一条消息都会重新申请,然后通过下面的语句。上面的代码可以看到,首先获取消息头部的序列号mSn,每个发出的消息中的序列号是唯一的,在网络端点处理完成之后进行回复时也要将消息的序列号返回,以便原始请求消息发送方根据该序列号判断是否为自己发出消息匹配。这样大家就明白了一个消息的完整的过程了吧。完成消息体内容的替换。

2023-09-28 14:47:05 620

SSymlinkerbash脚本和sysroot-relativelinks.py脚本下载

SSymlinkerbash脚本和sysroot-relativelinks.py脚本下载

2023-07-27

Qt布局管理器一些会迷惑的点(1)

对布局管理器一些常见的迷惑的点进行总结,更好的指导大家进行开发

2023-05-22

Qt 控件透明度设置方法总结

对Qt下控件的透明度设置进行了总结,并一一进行了验证。

2023-04-17

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

TA关注的人

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