原生C++开发(VS、Qt、CUDA)
文章平均质量分 54
用于项目开发的C++专栏,源码可直接复制粘贴,定期更新博客。
优惠券已抵扣
余额抵扣
还需支付
¥299.90
¥399.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
@会飞的毛毛虫
计算机专业博士在读,曾在课题组负责过硬件、软件、算法及落地部署的开发工作,发表了几篇水文。主要方向是做跟踪、跨域的虚拟生成,致力于成为一名Full Stack developer。有相关问题可以私信我为大家解答,看到不妨点个关注,我们一起进步哦!
展开
-
C++程序“错误代码0xc000007b”的解决方案
的话,vs生成的exe或者dll应该都是无法运行的。比如你调用了c++中默认的或等文件,这些实现与操作系统的互动的,所以需要有相应的环境,而这些环境都是由vcredist来提供的,比如有很多默认的dll文件。,下载红框所示的安装依赖包,然后安装。这么做的原因是:如果电脑中没有安装。原创 2023-12-06 15:17:49 · 1066 阅读 · 0 评论 -
Tensorrt导出engine文件加密(Windows&C++版)
扯皮的话:目前,人工智能越来越普遍,导致各种模型都需要进行落地应用。高效率的部署方式即通过Tensorrt进行部署,但通过该框架导出的engine文件却本身不具有加密性质,即可通过打印等方式得到该engine文件各种内容,从而导致商业秘密泄露。为此,本文将专门通过一个非常简单的小技巧将我们的engine文件进行加密,从而即使有技术人员拿到engine文件也不可能对其中的内容进行破解,从而保护商业机密。原创 2023-08-12 09:32:56 · 990 阅读 · 0 评论 -
QT之动态滚动显示图像类
【代码】QT之动态滚动显示图像类。原创 2023-05-10 22:09:09 · 840 阅读 · 0 评论 -
基于QT的线阵传感器、线阵探测器实时逐帧显示总结
在工程项目中,经常会要求开发人员对线阵传感器(如X光探测器,线阵相机等)采集得到的数据进行一个实时的逐帧可视化显示,即从左到右滚动显示,那么程序该怎么写?要面临哪些问题:问题一:传感器采集速度和显示速度的匹配问题线阵探测器的采集速度通常在10ms-50ms之间,在这么短的时间内如何逐列的快速显示是一个问题问题二:人眼分辨率和电脑分辨率问题人眼可见的分辨率通常为20-30hz之间,工控电脑的工作频率通常为60hz,远远达不到探测器的采集速度,那么如何实时逐帧显示呢?问题三:程序的实时性与原创 2021-10-31 00:05:57 · 1293 阅读 · 0 评论 -
Qt将所有依赖封装到一个.exe中及Enigma Virtual Box无法封装dll等问题
(关于这个网上有很多解决办法,比如由于找不到libgcc_s_dw2-1.dll 、libwinpthread.dll等,其实都是无法解决的,这个方法亲测有效^_^)找到自己所用的编译器,如蓝色箭头的MinGW或红色箭头的MSVC,打开这个终端。随后cd到exe文件的目录,并执行windeployqt命令。使用Enigma virtual box封装所有依赖为一个exe。原创 2022-09-05 09:31:38 · 1239 阅读 · 0 评论 -
高速特征金字塔多角度旋转模板匹配(工业零部件缺陷检测C++ Opencv版)
博主在性能较好的笔记本上测试算法全部执行效果大约为45ms,在一般配置的笔记本上博主在性能较好的笔记本上测试算法全部执行效果大约为130ms。下图即为实际检测效果。本文最后附有完整代码:Qt版和MFC版本(可直接运行)。...原创 2022-07-13 13:54:56 · 5105 阅读 · 16 评论 -
在win10和C++环境下使用tensorrt在一个或多个GPU同时加载多个模型
在读这篇文章之前请大家先去看看我的关于如何在Win10下用C++部署yolov5的傻瓜式教学文章:yolov5 win10平台下的C++推理及Tensorrt部署 篇二 (共三篇)如果没有前面的基础,那么看这篇博客就会比较吃力,大牛除外O(∩_∩)O。在C++调用tensorrt生成的引擎文件必须保证在同等算力和架构的显卡,这一点务必牢记。除此以外,要想同时加载多个模型,还必须对C++的Cuda编程有所了解,不了解也没事,本文就了解啦。 我们以如何加载多个yolov5的...原创 2022-03-13 22:07:50 · 7859 阅读 · 8 评论 -
Qt实现QChart实时绘制动态曲线,代码可复制移植。
本文逐代码实现实时监测传感器数据的界面可视化,在640个数据的时候可以实现1ms一次的刷新速度,当然实际的显示器可能达不到这么高的刷新率。具体效果如下图所示:话不多说,创建好Qt工程后,要使用QChart,还需注意以下地方:在.pro文件中添加:QT += charts 在用到QChart的文件中添加:QT_CHARTS_USE_NAMESPACE QChart必须显示在widget上,更确切地说,是必须把它显示在QGraphicView控件,QT为我们封装好了一个ui控件类QtChar原创 2022-03-11 17:39:45 · 8318 阅读 · 0 评论 -
Qt通过继承QWidget的方式自定义Tab Widget中的每个Tab
在开发客户端软件时,我们通常需要实现如下界面: 在Qt中,常用来做如下界面的控件为Tab Widget。但是,我们如果想做成图示的效果该怎么把呢,总不能把这群控件挨个拖入Tab Widget中吧。这种方法理论上是可行的,但是实际开发中没有人会这么干,这对后续的开发和代码的封装都及不友好。那么本篇博主就带大家通过C++类的方法实现Tab Widget中的每个界面。首先,我们在Qt的ui界面中拖入Tab Widget控件,依次删除Tab 1和Tab 2,为下面插入类...原创 2022-03-07 13:19:10 · 6462 阅读 · 0 评论 -
C++项目开发SDK中的回调函数
本篇博客不会给大家举什么复杂的例子,就是短短几行文字,让大家就能明白回调函数的简单应用。至于很复杂的应用比如同步回调,异步回调我们一般做项目开发也涉及不到,这里也不做过多的赘述。什么是回调函数:如果一个函数的名字被当作参数传给别的函数,那么这个函数就被叫做回调函数(这不是很简单?)回调函数的两个作用:让系统在恰当的时机通知应用程序去做一件事。 按照实际需要调整代码功能,让程序设计更加灵活,比如排序时传入排序依据。回调函数的应用场景:编写软件时,经常需要在特定条件达到时做一些...原创 2022-03-04 15:04:53 · 8998 阅读 · 1 评论 -
在不勾选生成依赖项的前提下用C++编译CUDA
我们在做深度学习模型部署时经常会遇到一个问题:将自己的模型打包成库拿给甲方后,甲方将模型集成到自己软件,在编译时需要勾选生成依赖项(右键项目 -> 生成依赖项 -> 生成自定义-> 对应CUDA),如下图所示:如果甲方的开发人员选用的是VS作为IDE环境,那么就没有什么大问题。如果选用Qt Creator或者其他IDE环境,那么还得熟悉CUDA编程那一套,整个过程是很繁琐的。那么如何快速导入算法模块呢?首先需要明白VS编译器中生成依赖项的作用:选择在编译当前代码时需要.原创 2022-02-24 22:53:11 · 6215 阅读 · 1 评论 -
在VS下用原生C++实现可直接调用的md5加密及base64编解码
md5加密和base64编解码的实现分别为两个类,即.h文件和.cpp文件,可直接复制调用。 base64编解码的调用方式如下: #include "Cbase64.h" #include <iostream> int main() { const std::string s = "需要编码的字符串" ; std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(s原创 2022-01-30 12:14:34 · 10162 阅读 · 0 评论 -
用VS封装自己的C++代码为dll和lib给第三方使用及各种错误解决方案
在学习封装前我们必须要明白的知识点:封装:也叫黑盒操作。用户只能拿到对应的DLL、Lib和.h文件。而实际实现的.cpp文件被封装起来,用户只能通过.h文件的接口进行调用,无法查看内部实现细节。所以,接口文件是非常强大的! 动态链接库DLL、静态链接库Lib及.h文件的区别:DLL文件是在运行时,将代码链接到目标;Lib文件是在编译期,将代码链接到目标;.h文件是公开给第三方使用的接口文件。DLL文件的本质是将cpp文件的实现转为二进制,其存放着真正的代码信息。Lib文件本质上和DLL文件拥有相同的代原创 2022-01-13 11:06:31 · 7945 阅读 · 0 评论