自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 静态库导入Qt QCustomPlot第三方表格图形库

静态库 + .h文件。

2026-11-05 16:48:59 15

原创 qt生成静态库文件

原因:项目在修改一点东西时,会重新编译,里面的大文件也会被重新编译(会用很长的时间),为减少改动一点,就编译很长时间的情况,我将大文件编成了静态库文件。QMAKE_CXXFLAGS += -Wa,-mbig-obj 大文件编译加 ,防止报错。点击构建,生成静态库文件, .a mingw .lib msvc。3. 静态库编译宏,进行静态编译 必须加。4. 如果是mingw 编译器需要加。Qt Create 创建新项目。创建c++ Library。将要编译的文件放到里面。2. 导出为静态库。

2026-11-05 16:20:32 150

原创 QMediaPlayer

【代码】QMediaPlayer。

2026-11-04 17:23:18 20

原创 QWebSocket

【代码】QWebSocket。

2026-11-03 18:01:46 25

原创 QNetWork 服务器端

【代码】QNetWork 服务器端。

2026-11-03 17:58:04 11

原创 httpserver_QNetWorkClient

【代码】httpserver_QNetWorkClient。

2026-11-03 11:35:41 25

原创 OpenCV 边缘检测 Canny

⚠️ 坑点:这个阈值 100 是固定死的,光照一变效果就崩,后面可以改成自适应阈值。,你代码里 40 : 120 = 1:3,是标准配置OpenCV。,下一次再点按钮,会在上一次画了红线的图上继续处理。这是核心函数:从二值图里寻找白色区域的轮廓。轮廓层级信息,每个轮廓对应一个。推荐比例:高阈值:低阈值 =把画好轮廓的图覆盖掉成员变量。就是第 0 个轮廓的全部点。

2026-10-27 15:32:23 191

原创 opencv 图像处理(一)

const cv::Scalar &borderValue = cv::Scalar(0,0,0) // 填充边界颜色,默认黑色。仿射变换:可以实现平移、旋转、缩放、斜切(错切);int flags = cv::INTER_LINEAR, // 插值,和resize一样。cv::Size dsize, // 输出图尺寸 (宽,高)适合:需要保留轮廓、边缘的场景(人像、物体轮廓)3. 几何变换(缩放、平移、旋转、翻转)适合:图像里随机的黑白噪点(椒盐噪声)生成旋转矩阵(最常用)

2026-10-27 13:36:01 312

原创 MyBoard(二)

重写 mousePressEvent、mouseMoveEvent、mouseReleaseEvent。创建BoardGraphicsScene。1. 实现画Rect。

2026-09-17 18:10:17 30

原创 MyWeChat(一) QSS

2. QTextStream 文本读写,可以操作:文件、QString、QIODevice(如 QFile、QTcpSocket),1. 继承QWidget 自定义控件的QSS是默认不支持的。

2026-09-15 21:26:59 21

原创 QGraphicsScene(一) drawCAD 问题

1. 移动时,图元位置和鼠标位置有偏差。前两笔异常:贝塞尔首段退化问题。

2026-09-15 21:25:50 31

原创 FFmpeg 面试准备

I 帧:关键帧,独立完整图像,不需要参考其他帧,可单独解码。P 帧:前向预测帧,参考前面 I/P 帧做预测,只存差值。B 帧:双向预测帧,参考前面和后面帧,压缩率最高,但需要缓存后面帧,引入延迟。使用 FFmpeg 库,解封装 mp4,取出音视频 packet,解码得到 PCM 音频 / YUV 视频;使用 SDL 播放,以音频时钟作为基准做音视频同步;流程:打开输入上下文 → 读取包 packet → 解码成 frame → 处理 / 编码 → 输出。音视频不同步:视频播放音频不播放。

2026-09-10 21:18:39 187

原创 运算符重载

a @ b等价于cout << p。

2026-09-10 15:55:25 181

原创 Qt 工业绘图板(组态 / CAD / 流程图)工业标准

工业组态、流程图软件(HMI 组态、流程图编辑器)主流架构:工具模式(策略模式),按钮只切换工具状态,画布原生鼠标事件创建图元。

2026-09-10 10:55:31 263

原创 刷题(一)

运行期函数有virtual修饰执行创建对象的函数,没有执行指针的版本。基类析构没有加virtual,静态绑定,只调用Base的析构函数,Son部分内存没有执行子类的析构函数,子类资源无法释放,造成内存泄漏。(5)mutable专门用于类成员变量,即使在 const 成员函数、const 对象中,该成员依然允许修改。(4)const 对象只能调用 const 成员函数,不能调用普通非 const 成员函数。(2)类内static修饰的变量是 类静态成员变量,它不属于任何一个对象,属于整个类。

2026-09-10 10:49:08 181

原创 Qt 面试(一)

源文件 (.cpp/.c):内部实现,不对外分发。头文件 (.h/.hpp):对外接口,放类声明、函数声明、宏。更新库不用重编译程序;调用者只包含头文件,链接库文件,看不到内部 cpp 源码。

2026-09-04 17:00:24 173

原创 SQL语句

SELECT * FROM student WHERE age >= 18 AND gender='男';INSERT INTO student(name,age) VALUES('张三', 18);A~F → 去左边子页 G~N → 中间子页 O~Z → 右边子页。VALUES('李四', 19),('王五', 20);左连接 LEFT JOIN ( 左边全部, 右边匹配 )更新 (where 更新条件)分组 group by。

2026-09-01 18:29:24 170

原创 ffmpeg 2个图片合并为视频

4. 对视频帧重新编码写入文件(2遍)1. 打开图片1,打开解码器。2. 打开图片2,打开解码器。

2026-08-27 10:49:52 164

原创 ffmpeg 2个音频合并

3. 打开输出文件 FILE *fp = open("1.mp3","wb");// 将packet写入文件。// packet。4. 解码--> 编码 ---》 写入文件(重复两遍)1. 打开音频1,打开解码器。2. 打开音频2,打开解码器。

2026-08-27 10:20:43 59

原创 FFmpeg 音量实时调节

【代码】FFmpeg 音量实时调节。

2026-08-25 23:03:05 52

原创 音量调节弹窗 自定义组件qt

* ==========8. volumeSlider弹窗(volumeSlider类,Qt::Popup 弹窗)内部的音量滑块 ========== *//* volumeSlider 是QWidget,弹窗顶层,它内部的水平QSlider,没有objectName,用后代选择器 */3. Qt::WA_WindowPropagation 弹窗事件可以传递给父窗口。配合Qt::Popup 处理父子层级、焦点传递、防止弹窗莫名消失。1. Qt::Popup 无边框,无标题栏。

2026-08-25 22:50:57 48

原创 OpenCV ncnn 人脸识别(一)

MobileFaceNet(ArcFace 轻量,ncnn param/bin)RetinaFace(mnet.25 已转好 ncnn)打开mingw自带的终端。生成CMakeFiles。运行CMakeFiles。

2026-08-24 15:54:46 255

原创 图片合并成视频 img2video ffmpeg

qDebug() << "获取packet失败";qDebug() << "写入失败";qDebug() << "发送packet失败";qDebug() << "打开输出文件失败";qDebug() << "打开输出流失败";qDebug() << "编码器打开失败";qDebug() << "信息获取失败";qDebug() << "打开解码器";qDebug() << "打开文件";qDebug() << "写文件头";qDebug() << "分配失败";qDebug() << "发送失败";

2026-08-22 07:30:22 91

原创 OpenCV LBPH算法人脸识别

qDebug() << "加载失败";// 提取人脸并将 图片大小设为 100 x 100。// 直接读取为灰度图。// 1. 准备人脸分类器。// 提取人脸 设置尺寸。// 2. 准备训练集。// 加载人脸分类器。// 3. 训练人脸。// 创建级联分类器。

2026-08-21 11:54:40 186

原创 音频解码 + Qt音频播放

qDebug() << "实际格式" << m_audioFormat->sampleRate() << m_audioFormat->sampleSize() << m_audioFormat->channelCount();// 使用最接近的格式。16. 从分装文件上下文中读取packet。17. 将packet 发送到解码器上下文。21. 转换音频帧(输入---》输出)18. 从解码器上下文中读取原始帧。7. 复制 解码参数。9. 申请原始帧结构体。// 是否支持这个格式。

2026-08-20 17:18:18 277

原创 OpenGL

1. QOpenGLShaderProgram 着色器程序管理类头文件 #include <QOpenGLShaderProgram>1. 创建QOPenGLShaderProgram 对象2. 添加着色器源码: addShaderFromSourceCode / addShaderFromSourceFile3. 链接程序: link()4. 绑定启用:bind()5. 绘制完成释放:release()

2026-08-20 01:41:09 178

原创 std::queue

【代码】std::queue。

2026-08-13 17:20:55 162

原创 FFmpeg + qt 音频播放

13. 循环解码 (1. 从fmt_ctx读取完整数据包 2. 将数据包发送到解码器 3. 从解码器中读取解码后的音频帧 4. 计算需要输出的样本数,包括swr内延迟的 5. 重采样 6. 将数据发送到主线程)11. 创建音频缓冲区(根据输入的采样率和样本数, 获取输出的样本数以及可能积压的延迟样本数计算做大输出样本数,根据最大输出样本数和采样率计算缓冲区大小,申请缓冲区大小的内存)qDeubg() << "实际支持格式:" << m_audioFormat.sampleRate() << "Hz"

2026-08-13 11:13:12 204

原创 ffmpeg,视频解码 (视频播放器)

初始化:av_packet_alloc() / av_init_packet(AVPacket *) .data = nullpter .size = 0 分配结构体。拷贝参数: avcodec_parameters_to_context(AVCodecContext *, const AVCodecParameters *);int flags, //缩放算法标记(SWS_BICUBIC / SWS_FAST_BILINEAR)释放:av_frame_free(AVFrame **);

2026-08-10 13:15:56 270

原创 Opencv VideoCapture

/ 0 笔记本自带摄像头 1 是 第一个usb摄像头。Linux可填 /dev/video0。10. 设置摄像头参数 .set(propId, value)9. 获取视频属性 .get(propid)3. 打开本地视频文件。5. 判断是否打开成功。7. 判断是否读到末尾。

2026-08-09 11:14:32 252

原创 QT配置FFmpeg

2. 将 D:\ffmpeg-shared\ffmpeg-master-latest-win64-gpl-shared\bin *.dll 文件 复制到。3. 将 D:\FFmpeg\bin 添加到系统环境变量。4. 在终端 测试 ffmpeg。1. 在ffmpeg 官方网站下载。2. 解压到 D:\FFmpeg。创建FFmpeg_qt_demo。添加 include 路径、库。2. 配置 .pro。

2026-08-08 19:21:25 240

原创 配置 opencv Qt项目

1. 在.pro 文件中添加 头文件 和 库 路径。文件下的 文件 复制到。

2026-08-08 18:58:55 76

原创 opencv 人脸识别学习笔记(一)

cv::Size size, // 椭圆的长半轴 短半轴。cv::Point center, // 中心坐标。cv::Mat imgSrc, //在imgSrc 上画。int lineType = cv::LINE_8, // 线类型。cv::Point center, // 中心坐标。cv::Mat imgSrc, // 在imgSrc上画。

2026-08-08 11:53:52 332

原创 opencv 寻找匹配物体

1. MatcreatecopyTo2. 模板匹配InputArray image, // 源图像,待搜索大图InputArray templ, // 模板小图,要找的目标OutputArray result, // 输出结果矩阵int method, // 匹配算法InputArray mask = noArray() // 掩码(可选)

2026-08-07 18:59:48 245

原创 opencv 图片缩放旋转

作用:使用2x3的仿射矩阵,对图像进行(旋转、缩放、剪切,平移)仿射变换,将变换后的图片存入 imgDst。根据中心坐标、旋转角度、缩放参数 生成旋转仿射矩阵。32FC1 32为float C1 一个通道。2x3 的 仿射矩阵。

2026-08-07 11:55:41 218

原创 opencv 图片合并

alpth + beta = 1 权重(调节透明度)当 alpth = 0, 显示Src2。

2026-08-07 09:11:15 60

原创 opencv 滤波

cv::Size(3,3) 卷积核大小,必须奇数, size越大越模糊。❗不是固定卷积核,权重是动态计算,每一个位置的权重都不一样,计算开销大。原理:在图像上滑动一个矩形窗口(卷积核),把窗口内所有像素。核窗口逐像素向右、向下滑动,遍历整张图,生成输出图像。和对应位置的像素做运算,实现模糊、锐化、边缘检测。ksize 窗口大小,取像素值,必须是奇数。双边滤波:保边缘的模糊,美颜算法底层。,赋值给窗口中心输出像素。全部底层都是卷积运算。

2026-08-07 00:03:47 264

原创 opencv 调节图片对比度和亮度

imgdata.cols, imgdata.rows, // 图片宽度(列数) 图片高度(行数)(const unsigned char *)imgdata.data, // Mat 像素数据首地址。static_cast<int>(imgdata.step), // 行步长。QImage::Format_RGB888 //生成的 QImage 格式。调节图片的亮度(beta)和对比度(alpha), 通过下面公式转换图片像素。

2026-08-06 18:13:08 129

原创 opencv4.6.0 + cmake3.25.1+ Contrib (qt5.14.2)

3. 设置OPENCV_EXTRA_MODULES_PATH 的值 为 Contrib_4.6.0_source/modules (上面创建的)的件的路径。7. 将 contrib-4.6.0.zpi 解压到contrib_4.6.0-source。6. 将 opencv-4.6.0.zip 解压到opencv_4.6.0-source。1. 下载cmake-3.25.1-windows-x86_64.msi。mingw-make -j8 (8内核的数量)2. 下载OpenCV-4.6.0.zip。

2026-08-06 16:31:40 264

原创 移植 alsa 到 gec6818

6. 新建 alsa-lib-1.2.16.1-install(名字随便)alsa-lib-1.2.16.1-install 上面创建的 文件夹。arm-none-linux-gnueabi 换成要用的工具链。1. 下载 alsa-lib-1.2.16.1。2. 放到 Windows 共享文件夹。7. 运行 configure。3. 复制到 ~ 下。

2026-08-03 21:04:09 218

空空如也

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

TA关注的人

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