- 博客(45)
- 资源 (3)
- 收藏
- 关注
原创 c++ new 和 malloc 分配内存
通过预先申请一块, 每当new的时候, 就是将预先申请的内存分配给class。delete的时候, 只是程序回收了这个内存块, 不是返还给系统。再看一个例子, 将class修改一下。这就是内存池一个大致的原理。访问的都是同一块内存。
2024-06-07 12:38:21 351
原创 Qt C++ 在windows上三目运算不断增加内存
最后在nv12转rgb像素转换函数发现是因为三目运算导致内存不断增长。由于平时测试的摄像头分辨率都比较低,所以这个问题不太突出。函数内部无任何的 new 和 malloc操作。今天换了个高分辨率的镜头才出现了这个问题。今天在做摄像头项目的时候,运行程序很卡。打开任务管理器发现程序内存一直在增加。找了很久才定位到三目运算的问题。
2023-08-04 16:31:50 929
原创 vscode 交叉编译器 include 红色波浪线
c_cpp_properties.json里面的。运行gcc交叉编译器, 附带参数。底下的就是include路径。就可以解决这个问题了。
2023-07-27 13:55:03 377
原创 C++ 子类析构函数没有被调用
希望在父类调用delete时,子类的析构函数被调用。而父类的析构函数没有加virtual声明的话。则在父类的析构函数加上virtual。如果父类里执行了delete。子类的析构函数是不会被调用的。
2023-07-18 16:50:01 482 1
原创 qt6 qml 显示yuv数据图像
在QVideoFrame初始化的时候, QVideoFrameFormat::PixelFormat对应你的图像数据格式。config->frame为QVideoFrame。按照以往的方法,先将yuv转为rgb然后在传入。Config.cpp中的setSink函数。的videoSink指针传入到c++里面。在VideoOutput创建完成时,将。调整图像大小比较麻烦,总是按比例显示。这里只针对yuv420p进行初始化。然后在你接收yuv数据的代码中。这样的方法比较麻烦,现在通过。性能的话没有做测试对比。
2023-04-21 10:02:22 977 2
原创 qt6 android glsl samplerExternalOES
要另外写一个文件,里面写入samplerExternalOES, 来注入fragmentShader.qsb。vertexShader和fragmentShader必须要用qsb来生成.qsb文件。因为里面用到了samplerExternalOES,所以怎么生成都会报错。只是qt6去掉了QSGSimpleMaterialShader这个类。在用qsb生成fragmentShader.qsb时。生成fragmentShader.qsb。我对于opengl和glsl都不熟悉。通过qsb指令将其替换。
2022-11-17 11:38:10 766
原创 wpa_supplicant不会自动获取ip的另外一种解决办法
然后发现wpa_cli可以触发wpa_supplicant断开和连接消息。每次调用wpa_supplicant后连上热点都不会获取ip。编写一个脚本/etc/cli_test.sh。在wpa_supplicant运行后,输入。每次热点连接就会调用脚本里的。
2022-09-23 17:26:33 999
原创 Windows ffmpeg 构建x264 for android
安装msys2后,“以管理员身份运行” MSYS2 MinGW x64。自行在谷歌下载Windows使用的NDK。需要哪个 cpu的库就构建哪个。在x264目录下会有个新目录。, 里面有对应CPU的.a库。进入到 x264文件夹。
2022-08-15 16:34:07 539
原创 Qt for linux QNetworkConfigurationManager发布程序异常问题
在开发机上跑QNetworkConfigurationManager::isOnline()这个函数没问题到了发布软件的机子上跑,出现了获取状态有问题原因就是软件包缺少插件拷贝/gcc_64/plugins里面的bearer文件夹,复制到发布的可执行文件目录下即可...
2022-06-16 11:08:13 403 1
原创 windows 构建 tensorflow lite 库文件(lib, dll)
构建工具tensorflowhttps://github.com/tensorflow/tensorflow/tree/r2.6Visual Studio 2019 自行在网上下载msys2https://www.msys2.org/bazel 3.7.2https://github.com/bazelbuild/bazel/releases?q=3.7.2&expanded=truepython 3.7.6https://www.python.org/downloads/rel
2022-05-06 11:38:02 1899
原创 QT tcp socket 注意事项(tcp socket 导致程序崩溃)
F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 in tid 18493 (QThread), pid 18454 (project.example)或者是ASSERT: “m_buf” in file这两个错误是因为socket 在write的时候, 调用线程和socket创建的线程不一致产生的崩溃有两种情况在其他线程调用了write函数,需要通过信号跳转到socket创建的线程调用write(c
2022-04-06 15:15:06 7740
原创 QT LINUX 上发布程序 QImage问题
吐槽在LINUX上发布QT是真的很麻烦如果你在网上查询了一堆拷贝库的方法到最后发现使用QImage的时候崩溃了QImage::loadFromData突然间失败了就是因为库没有拷贝完整在plugins目录下 拷贝imageformats整一个文件夹注意是整个文件夹复制到可执行文件目录下放到你的编译好的可执行文件目录下然后就可以用了为什么库不齐全却能打开程序呢?可能这就是QT厉害的地方了。...
2022-03-25 09:42:10 438
原创 qt qml StackView 触摸滑动返回(swiping pop)
模仿ios的效果点击item触发push 第二层界面通过动画从右边往左边弹出然后在最左边向右滑动返回上一层StackView { id: stackView anchors.fill: parent initialItem: mainView property real hideX: 0 - width * 0.3 pushEnter: Transition { XAnimator {
2022-02-23 14:51:04 758
原创 Qt for Android 刘海屏 获取安全区域(Safe area, Display Cutouts)
在.java文件重写onAttachedToWindow()函数然后通过safeArea() 将上下左右的安全区域发出去public native static void safeArea(int top, int left, int bottom, int right);@Overridepublic void onAttachedToWindow() { super.onAttachedToWindow(); System.out.println("java -> on
2022-01-13 14:28:17 3296
原创 qt for ios xcode error:65
Qt 6.2Xcode 13.2.1第一次编译ios app的时候莫名报错error:65在.pro添加了这几个模块后就编译成功,在iPhone上成功运行LIBS += -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks -framework VideoToolboxLIBS += -F/Appli
2022-01-04 13:44:37 1428
原创 QT ffmpeg 解码av_read_frame 实现进度条快进快退
这个是之前写的添加暂停功能的文章https://blog.csdn.net/Lj2_jOker/article/details/121970262?spm=1001.2014.3001.5502既然实现了暂停,为什么不把进度条实现呢解码部分代码status = VideoProcess::__running;emit f->statusChanged();decode->old_dts_ms = 0;qDebug() << QThread::currentThrea
2021-12-21 16:37:32 1942
原创 Qt ffmpeg解码av_read_frame 实现暂停功能
解码的时候都是通过线程while读出视频流然后在转为QImage发送出去暂停就是把线程给暂停通过QWaitCondition 或是 std::condition_variable(例子用的是std::condition_variable)因为是通过帧的时间戳来发送QImage在计算时间戳的时候,需要把暂停这段时间给减上就行了// 记录开始读视频流的时间戳qint64 start_ms = QDateTime::currentDateTime().toMSecsSinceEpoch();//
2021-12-16 11:17:19 2012
原创 qt QTranslator::load()成功却没有翻译的问题
原因QTranslator为函数的局部变量,函数的生命周期过了,QTranslator也被销毁了则QApplication::installTranslator() 也没有作用了需要把QTranslator作为成员变量 或者 指针保存
2021-11-29 15:08:13 1281
原创 QT QImageReader缩放比QImage缩放更有效率
一般加载图片代码QImage img;img.load("image file path");如果只是加载一张图的时候,这种方法没问题在加载多图的时候,就会很慢了用QImageReader 加载图片QImageReader reader;reader.setFileName("image file path");QSize size = reader.size();// 这里缩放了size.scale(imgW, imgW, Qt::IgnoreAspectRatio);reader
2021-11-13 08:57:43 1191
原创 记录Tensorflow models的那些坑
以下都是在windows 10环境下进行安装编译tf models最麻烦的地方就是要安装对应版本的python而 git上的教程都很老了,安装tensorflow总是会出现各种问题现在tf 2.x 版本 需要python3.5在以上tensorflow models 官方安装教程tensorflow models下载最新的tf models,链接教程里面有源码连接Anaconda版本:Anaconda3-2020.02-Windows-x86_64.exe安装完anaconda 后要以
2021-11-03 16:43:11 594
原创 Qt使用FFMPEG时,解决路径带中文的BUG
avformat_alloc_output_context2 传带中文的路径时可以用QString::toStdString() 转为std::string然后std::string::c_str()传路径字符串 就可以解决路径带中文的问题
2021-09-10 12:55:01 1110
原创 LInux使用V4L2打开UVC摄像头
直接贴代码,编译工具用了qt#include <errno.h>#include <fcntl.h>#include <linux/videodev2.h>#include <linux/v4l2-controls.h>#include <stdint.h>#include <stdio.h>#include <string.h>#include <sys/ioctl.h>#include &l
2021-09-02 14:25:59 1614
原创 C++ 图像数据翻转代码 (水平翻转 垂直翻转 对角线翻转)
enum PixelFlip{ __NoFlip = 0, __Horizontally, __Vertically, __Diagonally,};enum PixelChannel{ __U8 = 1, // 8 bit __U24 = 3, // 8:8:8 bit};void flip(uint8_t *data, int width, int height, PixelFlip state, PixelChannel chan
2021-04-30 09:19:02 1502
原创 qt qdatastream二进制写入数据到文件
假设:要写入double类型数组double *data; // 二进制写入的double类型数组int dataLength = 10; // 数组长度QString filePath; // 文件路径QFile file(filePath);if( file.open(QIODevice::ReadWrite) ) { QDataStream stream(&file); stream.writeRawData(reinterpret_cast<char *>
2021-04-20 15:21:08 1222
原创 ARM-LINUX 使用 FFMPEG NGINX 实现 RTMP推流
NGINX 下载地址NGINX 依赖库pcre 源码pcre 下载地址openssl 源码openssl 下载地址zlib 源码zlib 下载地址nginx-rtmp-module得去git下载因为nginx和openssl版本不匹配可能会冲突我使用的是pcre-8.39openssl-1.0.2unginx-1.6.3 zlib-1.2.11nginx交叉编译真的太痛苦了主要会各种报错首先写一个脚本文件, 保存为nginx_build.sh#!/bi
2021-03-29 16:51:46 1217
原创 关于AT SMS所有指令都返回ERROR的问题
如果AT任何关于SIM卡操作都失效的话可能是SIM卡设置了PIN密码需要通过AT+CPIN=PIN密码来解锁输入AT+CPIN?看看返回类型返回值READY 不需要输入任何密码SIM PIN 需要输入 PIN 码SIM PUK PIN 码解锁密码PH-SIM PIN SIM 卡绑定密码PH-NET PIN 网络密码...
2021-02-20 11:51:44 1976
原创 QT QSerialPort 的坑
最近在做ARM-LINUX GPS信息接收4G模块是通过串口通讯的用QSerialPort接收数据因为数据量比较大,所以把串口接收数据的类放入了线程结果程序莫名崩溃,一开始还以为哪里指针报错了尝试了很久然后我在 QSerialPort 的 readAll() 前后进行了qDebug()发现 readAll() 后没有打印输出,那就是readAll() 出问题了readAll()不能放入子线程当接数据少的时候,在线程readAll()不容易出问题因为GPS数据量大,所以才发现了这个问题,之
2021-02-10 10:38:11 1492 2
原创 QT ME3630 通过AT指令 发送短信
首先先确认短信格式是否为TEXTQString str = QString("AT+CMGF?\r");serialport->write(str.toLatin1());串口返回:\r\n+CMGF: 0\r\nOK\r\n如果为0则为PDU模式需要设置为TEXT模式如果为1,则为TEXT模式设置TEXT模式:QString str = QString("AT+CMGF=1\r");serialport->write(str.toLatin1());串口返回:\r
2021-02-01 17:21:14 553
原创 QT 打开USB摄像头
请使用MSVC2015 64位或以上的编译器构建在工程exe添加/64bit_lib/libUVCamera.dll 动态库支持多摄像头打开可自行修改程序源码摄像头图像格式只支持yuv420p, yuyv其他格式请自行转换图形格式效果图:工程下载...
2021-01-26 12:52:01 623
原创 QT 使用Q_OBJECT导出动态链接库 dll 和使用报错:C2491
先吐槽一下Windows的导出库形式真的很麻烦假设你的dll头文件#if defined(_MSC_VER) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)# define Q_DECL_EXPORT __declspec(dllexport)# define Q_DECL
2021-01-23 10:21:55 2062
原创 ARM-LINUX uboot是怎样启动内核
首先进入到uboot输入:print输出(注意不同的uboot输出的内容不一样):baudrate=115200board_name=EVKboard_rev=14X14boot_fdt=trybootargs=console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.10.100:/home/lee/linux/nfs/rootfs ip=192.168.10.50:192.168.10.100:192.168.10.1:255.255.25
2021-01-22 09:50:41 171
原创 ARM-LINUX QT libts.so.0报错
在/etc/profile添加一条代码:export QT_DEBUG_PLUGINS=1程序运行的时候会打印信息
2021-01-21 16:18:18 770
原创 ARM-LINUX BUSYBOX文件系统实现USB自动挂载卸载
首先查看arm文件目录/etc/init.d/rcSmount -amkdir /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -s有无上面字段有的话则可以使用mdev.conf无的话则可能需要打开这个功能打开/etc/mdev.conf, 无的话则创建输入sda[0-9] 0:0 666 @/etc/usb_insert.shsda 0:0 666 $/
2021-01-20 11:56:33 666
原创 ARM-LINUX QT工程调用第三方库(.so文件)
首先要确认第三方动态库文件的交叉编译器版本和你的ARM的交叉编译器版本一致如果有源码就自己编译一个版本,没有的话就没办法。静态库在编译的时候就链接到生成文件里面了所以不需要此方法########################################################################然后在ARM文件系统里 进入/etc/ 打开profile找到环境变量:LD_LIBRARY_PATH如上图所示, 我这里的路径是/usr/lib所以只需要把.so库放到这
2021-01-19 17:44:38 1375
原创 指针作为参数传递的问题
指针作为参数传递,是不能修改其地址,只能修改其数值指针作为参数传递,是不能修改其地址,只能修改其数值指针作为参数传递,是不能修改其地址,只能修改其数值#重要的事说三遍例如程序输出:在同一函数内的指针偏移操作:程序输出:因为test(int *)可以看成是test(int &)你可以对传入的参数的值进行修改,但是不能修改它的地址例如:程序输出:如果你就是要在其他函数里面修改指针的地址其实也是可以的,就是传递指针的指针程序输出:...
2021-01-15 17:04:39 424
原创 ARM-LINUX安装UVC USB摄像头 驱动
在内核根目录下输入:make menuconfig进入图形界面进入:Device Drivers–> Multimedia support–> Media USB AdaptersUSB Video Class (UVC)这个选项按空格,选择" M "退出保存图形界面执行:make ARCH=arm CROSS_COMPILE=arm-linux-guneabihf- modules执行完成后, 在/drivers/media/usb/uvc/下有一个 uvcvideo
2021-01-13 10:31:38 2308 3
原创 ARM-LINUX安装usbserial ch340驱动
首先在ARM板子输入:lsmod查看有没 usbserial ch340显示如果没有进入到Linux内核文件根目录,先修改Makefile:sudo vi Makefile打开Makefile找到ARCH ?= $(SUBARCH)CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)屏蔽这两行输入新的两行ARCH ?= armCROSS_COMPILE ?= arm-linux-gnueabihf-因为很多教程会教你使用脚本编译内核而脚
2021-01-12 16:30:21 2926
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人