自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用VS编译NCNN

ncnn编译

2022-07-22 12:00:49 68

原创 LCD 显示撕裂解决

LCD显示撕裂

2022-07-14 18:47:09 600

原创 【QT学习笔记】QT的事件机制

在我们做UI界面时,经常会重写mousePressEvent,wheelEvent等函数,根据不同情况要对事件event进行特殊处理。当执行event->accept()时,意味着这次的事件已经被“我”接受啦,只有我使用。当执行event->ignore()时,意味着这次的事件“我”不要接受他,函数执行完event给我的父窗口,他会需要的。差别也就是要不要传递给父窗口,accept不传递,ignore传递,注意是父窗口,不是基类。初学Qt的小坑记录(5)——事件的accept(

2022-05-28 21:49:23 121

原创 【QT学习笔记】QThread的使用

QT中通过创建一个继承于QThread的类,实现其中的虚函数void run()的方式来使用线程。使用方式1.创建一个继承于QThread的类2.定义一个bool类型的变量,和StopThread函数,让外部能够控制线程的结束2.重写虚函数void run()3.调用start启动4.在关闭对话框的时候(closeEvent事件)关闭并等待线程的退出#include <QThread>class MyThread : public QThread{ Q

2022-05-21 17:01:17 160

原创 【Qt学习笔记】对QPainter中setWindow和setViewport的理解

理解了一些概念也就理解了这两个函数看的见的物理坐标即创建的Widget中的坐标,左上角为原点(0,0),宽和高就是Widget的宽和高看不见的逻辑坐标QPainter是在看不见的逻辑坐标中进行绘图的在不调用setWindow和setViewport的时候物理坐标和逻辑坐标是一样的setWindow将逻辑坐标的哪一部分区域拿出来映射到物理坐标,其中的参数矩形区域是对于逻辑坐标来说的...

2022-05-14 20:42:15 328

原创 【Qt学习笔记】Model/View设计模式

什么是Model/View设计模式,该模式解决了什么问题一个好的有图形界面的应用程序的软件架构应该是显示和数据是分离的,显示部分不应该去处理数据,数据处理部分更不应该去做显示相关的事情。Qt提供的Model/View设计模式就能很好完成改任务。其实更好的应该叫做Data/Model/View设计模式。这样能看出这个结构就是Model在Data和View之间提供了一个桥梁,来将数据和显示分离开。如何显示Qt提供的这个模式使用起来非常方便,Data部分的代码不需要开发者自己实现,View中的

2022-05-07 16:44:39 588

原创 【QT学习笔记】QAction和QToolButton的使用

QAction可以在QT Creator中Action Editor中创建QAction创建之后的两个使用方式放到tool bar中 跟QToolButton绑定(ui->tBtnListIni->setDefaultAction(ui->actListIni))tool bar中的QAtion实现下拉菜单的功能 QMenu *menu = new QMenu(this); menu->addAction(ui->actSelAl...

2022-04-24 16:54:08 1060

原创 【QT学习笔记】右键菜单功能的实现

右键菜单功能是QWidget层面的功能,那么所有的控件都可以实现右键菜单的功能右键菜单步骤设置右键菜单属性为自定义菜单定义菜单中的动作实现action 点击后的槽函数实现菜单槽函数,在槽函数的实现中定义右键菜单的内容void ItemWidgets::on_listWidget_customContextMenuRequested(const QPoint &pos){ QMenu *menu = new QMenu(this); ...

2022-04-24 16:15:46 728

原创 【QT学习笔记】connect的使用

connect有主要有两种形式方式一connect(*SenderObj, &SenderClass::signalMethod, *ReceiveObj, &ReceiveClass::slotMethod)比如connect(ui->pushButton, &QPushButton::clicked,this, &MainWindow::slot_clicked);这种方式不必写参数,那么缺点就是不能以参数区分信号方式二connect(*

2022-04-23 15:42:14 593

原创 【QT学习笔记】QT Creator的编译系统

使用QT Creator新建一个窗口类的项目时,会自动生成四个文件main.cpp widget.h widget.cpp widget.ui其中widget.h和widget.cpp的内容是#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public

2022-04-17 21:50:38 818

原创 【QT问题解决】运行时出现QMetaObject::connectSlotsByName: No matching signal for XXX

在使用QTimer的时候定义了一个槽函数void on_timer_timeout(),然后运行的时候就出现了QMetaObject::connectSlotsByName: No matching signal for on_timer_timeout的信息。原因分析:QT信号和槽的关联方式分两种:1.显式连接自己手动写代码使用connect去连接信号和槽就是显式连接2.隐式连接隐式连接是QT的编译系统自动的连接信号和槽,我们自己并没有相应的code去连接信号和槽,此时编译系统会自

2022-04-17 17:35:43 1051

原创 【QT问题解决】在QT中使用中文

使用中文的时候遇到了编译出错或乱码的问题1.如果中文字符数是奇数,出现编译错误2. 如果中文字符数字是偶数个,一般能编译过,但是显示的时候乱码3.不论中文字符有多少个,编译能通过,但是显示的时候有乱码编译出错原因分析查看QT Creator使用的编译器,可以看到这里使用的编译器是MSVC编译出问题则说明编译器使用的编码方式和QT Creator的编辑器使用的编码方式不一致。QT Creator的编辑器默认使用UTF-8编码MSVC在编译时解读文件时会根据文件有没.

2022-04-17 17:13:12 1049

原创 【QT学习笔记】QSpinBox QDoubleSpinBox的使用

QSpinBox用于整数的显示与输入,一般显示为十进制,也可以显示二进制和十六进制的数,而且可以在显示框增加前缀和后缀QDoubleSpinBox用于浮点数的显示和输入,可以设置显示小数位数,也可以设置显示的前缀和后缀QSpinBox和QDoubleSpinBox的主要属性如下:以下属性都可以在属性编辑框中进行设置的。prefix //数字显示的前缀suffix //数字显示的后缀m...

2022-04-16 15:56:01 1987

原创 【OpenCV学习笔记】图像平滑处理

图像平滑处理,从数值上来说是一种平滑化,从图形上来说相当于产生了模糊效果,中间点失去细节。图像平滑处理就是对图像进行滤波,所谓滤波就是重新计算图像中的各个像素点,使该像素点的值与周围的像素点的值相近。计算各个点的值通常使通过指定一个滤波核,并会将该滤波核在图像上滑动,从而能够计算除整幅图像的各个像素点的值。滤波核的大小通过为奇数,一般为3,5,7。OpenCV中的几种滤波方式:均值滤波 方框滤波 中值滤波 高斯滤波 滤波方式 优点 均值滤波 均值滤波是用

2022-04-10 22:00:49 3136

原创 【QT学习笔记】QString和数字之间的转换

QString和数字之间有方便的接口可以使用可以将整数(十进制,二进制,十六进制),浮点数方便的转换成字符串可以将字符串方便的转换成整数(十进制,二进制,十六进制),浮点数QString转数值字符串转换成整数(十进制,二进制,十六进制)int toInt(bool *ok=nullptr, int base=10) const;参数二base用于指定字符串中的数字字符的进制字符串转浮点数float toFloat(bool *ok=nullptr) const;

2022-04-10 15:36:14 1840

原创 QString的使用

QString("%1,%2").arg(prop.name()).arg(propValue)

2022-04-09 22:06:54 366

翻译 Neon Intrinsics各函数介绍

#ifndef __ARM_NEON__#error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h#endif(1)、正常指令:生成大小同样且类型通常与操作数向量同样的结果向量;(2)、长指令:对双字向量操作数运行运算,生成四字向量的结果。所生成的元素通常是操作数元素宽度的两倍,并属于同一类型。(3)、宽指令:一个双字向量操作数和一个四字向量操作数运行运算,生成.

2022-04-04 21:44:07 612

原创 【QT学习笔记】在QT Creator中配置第三方库

ss

2022-04-04 16:08:01 403

原创 使用neon实现RGB888转RGB565

遇到的坑及解决error:constant 11 out of range 0 - 8

2022-04-04 14:41:59 238

原创 NEON编程学习

2022-04-03 22:07:26 503

原创 【QT学习笔记】元对象系统

QT的元对象系统基于以下三个组件:类:QObject,所有需要使用元对象系统的基类 宏:Q_OBJECT,在类的private部分声明 编译器:元对象编译器(moc),为每个QObject子对象自动生成必要的代码来实现元对象特性在程序编译的时候,会先使用元对象编译器读入C++的源文件,如果它发现了类里有Q_OBJECT声明,它就会创建一个C++源文件,为该类生成包含元对象实现的代码。基于这样的一个元对象系统,QT实现了对象间的通信机制信号和槽运行时获取类的名称const QM

2022-03-26 21:26:59 111

原创 【QT学习笔记】文件对话框

选择单个文件QFileDialog::getOpenFileName返回QString选择多个文件QFileDialog::getOpenFileNames返回QStringList QString fileName = QFileDialog::getOpenFileName(this, tr("文件对话框!"),

2022-03-18 22:18:42 259

原创 Anaconda 环境的使用

Opencv的安装Links for opencv-contrib-pythonLinks for opencv-python下载对应的版本pip install opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whlpip list 可看到所有安装的包Anaconda3\Scripts中显示了所有的工具

2022-03-18 14:38:30 2865

原创 【QT学习笔记三】在VS中使用QT

如果希望使用VS开发带有QT的项目的时候虽然能够在VS中创建QT的界面,但是想使用QT Creator中方便的跳转到槽等功能的时候,我自己用了多种办法,试验下拉是没有办法使用的。但是这个功能确实能让我们少些很多代码,毕竟这些都是体力活,我们又希望使用,要怎么办呢?1.创建工程的时候QT Creator来创建项目,这样会生成一个*.pro的文件2.项目创建完成之后,使用VS导入*.pro文件即可这样就可以使用VS来编译调试运行项目需要使用跳转到槽的功能,就是用QT Creato

2022-03-17 21:07:28 3410

原创 读写文件操作

#include <iostream>std::ofstream file;file.open((const char*)"C:\\Users\\\\Desktop\\1.bin", std::ios::trunc | std::ios::binary);file.write((char*)image.data, 112*112);file.close();

2022-03-16 18:15:08 57

原创 【OpenGL学习笔记十】摄像机

根据之前的学习已经学习到,如果需要从不同的角度去观察空间中的物体,其实就是构造LookAt矩阵即观察矩阵。构造lookAt矩阵,给出几个坐标即可void lookAt(const QVector3D& eye, const QVector3D& center, const QVector3D& up);摄像机盯着原点看QVector3D eye(0.0f, 0.0f, -3.0f);QVector3D center(0.0f, 0.0f, 0.0f);//center

2022-03-14 20:42:15 401

原创 【Opencv学习笔记9】从内存中读取图像

QFile aFile("C:\\Users\\chaojunche\\Desktop\\1.jpeg"); aFile.open(QIODevice::ReadOnly | QIODevice::Truncate); QByteArray file = aFile.readAll(); vector<char> vdata(file.data(), file.data() + file.size()); Mat img_decode = imdecode(cv::Mat(vdat..

2022-03-14 15:07:52 4266

原创 【QT学习笔记二】响应键盘事件

在窗口的类定义中声明#include <QKeyEvent>void keyPressEvent(QKeyEvent *event);在窗口的实现中处理void glWidget::keyPressEvent(QKeyEvent * event){ switch (event->key()) { case Qt::Key_W: { } break; case Qt::

2022-03-13 13:35:06 607

原创 【OpenGL学习笔记九】坐标系统

有了一个三维的模型之后,如何能够从不同的角度显示它?就像用鼠标拖着箱子,如何360度环绕的旋转,通过滑动齿轮放大,缩小,这些都是如何实现的?

2022-03-12 22:10:14 723

转载 arm neon 图像旋转

转自:ARM NEON优化5.图像旋转_亦梦云烟的博客-CSDN博客_neon 旋转输入高和宽为原图的高和宽#include <arm_neon.h>int GrayRotation90_NEON(uint8_t * in, uint8_t* out, int height, int width){ uint8x8_t vone = {1,1,1,1,1,1,1,1}; uint8x8_t index_0 = {28, 20, 12, 4, 24, 16, 8,

2022-03-03 18:24:21 164

原创 【OpenGL学习笔记八】纹理

纹理是2d的图片通俗的说绘制纹理就是用OpenGL绘制图片告诉着色器纹理坐标把纹理传给着色器着色器通过sampler2D GLSL内置数据类型texture2D GLSL内建函数

2022-02-13 17:17:44 385

原创 【ARM学习笔记二】去除未用到的函数,缩小可执行程序尺寸

在嵌入式系统中经常会要求,可执行程序的尺寸尽可能的小在代码中经常会有一些函数没有被用到,但是也会被编译到可执行文件中。为了避免这种情况,可以在编译时,添加选项:-ffunction-sections -fdata-sections 。该选项让每个函数和数据独自一段在链接时,添加选项:-Wl,-gc-sections。该选项将去除无用的段。即:CFLAGS 加上 -ffunction-sections -fdata-sectionsLDFLAGS 加上 --gc-sections

2022-02-07 13:30:10 114

翻译 【ARM学习笔记一】链接器

链接器的作用c文件和汇编文件会被编译为.o 文件,链接器把所有.o文件链接为二进制可执行文件。有三种可执行文件:一种是.elf,一种是.bin,.hex是一种特殊的可执行文件链接器的工作步骤:1.符号解析(Symbol Resolution)2.重定向(Relocating)1.符号解析## main.sarr: .byte 10, 20, 25 @ Read-only array of byteseoa:

2022-02-07 12:23:55 124

原创 【OpenGL学习笔记七】着色器语言(GLSL)

GLSL是类C语言典型着色器结构开头总是版本声明 使用in关键字定义输入变量 定义out关键字定义输出变量 定义uniform main函数#version version_numberin type in_variable_name;in type in_variable_name;out type out_variable_name;uniform type uniform_name;int main(){ // 处理输入并进行一些图形操作 ... //

2022-01-16 19:19:50 1882 3

原创 【OpenGL学习笔记六】使用QOpenGLShaderProgram编写着色器程序

z​​​基于Qt的OpenGL(三):QOpenGLShaderProgram和GLSL在编写着色器程序的时候如果不使用QOpenGLShaderProgram,那么程序写起来将是这样的static const char* vertexShaderSource = "#version 330 \n" "layout(location = 0) in vec3 posVertex;\n" "void main() {\n" "

2022-01-13 13:40:07 402

原创 【QT学习笔记一】资源文件

如果需要将文件(比如图片,二进制文件等)编译进可执行文件内部,可使用QT提供的资源系统。在QT Creater中把文件放到资源文件中的步骤工程上点右键,选择“添加新文件...”之后按照引导,设置资源文件的名称和路径即可完成资源文件的创建Qt 学习之路 2(9):资源文件 - DevBean Tech World...

2022-01-12 13:31:45 235

原创 【OpenGL学习笔记五】 索引缓冲对象EBO

EBO即索引缓冲对象为什么需要EBOOpenGL里的VBO,VAO,EBO的理解 - yongfengnice - 博客园EBO与VBO使用方式类似,先使用glGenBuffers创建EBO,再使用glBindBuffer绑定EBO,然后使用glBindBuffer传送数据,注意类型为GL_ELEMENT_ARRAY_BUFFER,绘图的时候使用glDrawElements函数。OpenGL VAO和VBO以及EBO的使用_mozhi-CSDN博客...

2022-01-09 19:46:54 619

原创 【OpenGL学习笔记四】顶点数组对象VAO

在不使用VAO仅使用VBO进行绘图比如绘制一个三角形的步骤是绑定缓冲对象以拿到顶点数据 配置顶点属性指针以便OpenGL知道如何解析顶点数据之后每次绘制一个三角形都要重复执行以上步骤,但是上面的步骤的配置都是相同的,不需要重复执行,VAO就是用来解决这个问题的。使用VAO,只需要将配置函数执行一次,之后再绘制该物体的时候只需要绑定该VAO即可。VAO的使用非常简单,需要在使用VBO等之前使用下面两条语句绑定即可unsigned int VAO; glGenVertexArr..

2022-01-09 19:31:09 2677

原创 【OpenGL学习笔记二】顶点缓存对象VBO

OpenGL画图是通过显卡来画的,显卡画图的数据需要从显卡的内存中来取,那么就需要有接口能把数据从CPU内存传输到GPU内存中去EBO对象用于完成该功能

2022-01-09 18:59:36 275

原创 【OpenGL学习笔记三】绘制三角形-仅使用VBO

定义三角形顶点 static const float vertices[] ={ -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, -0.5f, 0.5f, 0.0f}; 把顶点数据送入GUP 这需要用到VBO对象,它可以在GPU内存中储存顶点数据,使用VBO的好处是我们可以一次性的发送一大批数据到显卡上,而不需要每个顶点发送一次(立即渲染模式就是这样做的),从CPU把数据发送到显卡相对较慢,所以我们要尽可能尝试一次性发送尽可能多的数据

2022-01-09 16:52:58 425

空空如也

空空如也

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

TA关注的人

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