C++编程
文章平均质量分 67
C++编程
【网络星空】
人工智能图像领域算法研发,实时发布行业最新技术,希望大家白嫖愉快。
展开
-
【C++类型转换之reinterpret_cast】
实现的功能就是把表达式的值强制转换为类型说明符表示的类型。除了这种强制类型转换方法外,C++还提供了四种类型转换方法,分别为static_cast(表达式)dynamic_cast(表达式)const_cast(表达式)reinterpret_cast(表达式)原创 2023-06-10 13:49:37 · 247 阅读 · 0 评论 -
【OpenCV-C++-CUDA】
使用OpenCV-C++版本在CUDA下的编程应用,主要使用双边模糊,对图像进行美颜细化。原创 2023-05-10 22:10:01 · 494 阅读 · 1 评论 -
【C++中concurrency::task的简单实战使用】
【代码】【C++中concurrency::task的简单实战使用】原创 2023-05-10 09:18:07 · 145 阅读 · 0 评论 -
【OpenCV中的CUDA模块 II】
本文我们概述了GPU OpenCV模块并编写了一个简单的演示,以了解如何加速Farneback的Optical Flow算法。我们研究了OpenCV为该模块提供的API,您也可以重用该API来尝试使用CUDA加速OpenCV算法。原创 2023-05-10 09:15:52 · 1007 阅读 · 0 评论 -
【C++ 宏】
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1)简单的宏定义:#define 例: #define PI 3.1415926(2) 带参数的宏定义#define () 例: #define A(x) x。原创 2023-04-17 14:59:23 · 236 阅读 · 0 评论 -
【c++更新文本文件】
【代码】【c++更新文本文件】原创 2023-04-17 11:33:47 · 196 阅读 · 0 评论 -
【 C++函数模板及其实例化和具体化】
当我们对不同类型的变量执行同样的操作时,如果用函数重载,会麻烦很多。编译器会对具体化的类型专门使用这个函数,类似于函数重载,不过这是对函数模板的特例化处理。即指示编译器直接创建一个函数实例,上面说到,函数模板是一个生成函数的方式,显式实例化就是告诉编译器生成一个函数。注意不能对实例化和具体化一样类型的函数模板,但可以另外定义相同类型相同名字的函数,即下面的代码不能同时存在。调用函数时,在变量类型匹配的上时,优先使用非模板类型的,也可这样操作告诉编译器使用模板类型的函数。那么c的类型是什么呢,举个例子。原创 2023-04-17 11:01:54 · 129 阅读 · 0 评论 -
【模板显式、隐式实例化和(偏)特化、具体化的详细分析】
一个通过使用具体值替换模板参数,从模板产生的普通类,函数或者成员函数的过程。原创 2023-04-17 10:50:33 · 528 阅读 · 0 评论 -
【C++ 泛型编程详解】
如果类的模板参数列表有默认值,可以不传模板参数,但一定要加 如 ClassName< > classN;创建堆区对象的时候,所有的类名称后面都要加模板参数列表,如 ClassName< typename T >* classN = new ClassName< typename T>;下面是个简单的类模板示例。)和子类有模板(CFather *cf = new CSon)两种,子类和父类的模板参数列表可以不一样,但一定要对应好。原创 2023-04-17 10:35:22 · 201 阅读 · 0 评论 -
【c++ 队列使用】
需要注意的是,在使用 std::mutex 和 std::lock_guard 实现多进程操作共享内存的同步时,需要保证共享内存的访问顺序是线程安全的,否则可能会导致数据错乱的情况。此外,在使用 std::mutex 和 std::lock_guard 时,需要注意线程之间的同步和互斥问题,以避免出现死锁等问题。需要注意的是,在使用 std::queue 实现多线程队列时,需要保证队列的容量足够大,以避免出现队列满的情况。此外,在出队操作时,需要注意队列的先进先出顺序,以避免出现数据错乱的情况。原创 2023-04-14 17:53:11 · 109 阅读 · 0 评论 -
【C++17 std::filesystem 用法】
std::filesystem 需要C++17或以上的支持,如果你也是使用visual studio开发,那么可以通过 项目属性 > 配置属性 > C/C++ > 语言 > C++语言标准 进行设置。原创 2023-04-14 17:08:00 · 714 阅读 · 0 评论 -
【利用OpenCV中的SIFT、SURF和ORB分别提取图像特征】
在日常应用中,有SURF基本就不用考虑SIFT,SURF基本就是SIFT的全面升级版,当然也有其他SIFT的改进版比如Affine SIFT的效果就要比SUFR要好更多,但是计算时间也有延长,而ORB的强点在于计算时间。ORB主要还是在VSLAM中应用较多,场景变化不明显,但是需要高速的计算时间,这正好符合ORB。尺度变换鲁棒性: SURF>SIFT>ORB(ORB尺度变换性很弱)计算速度: ORB>>SURF>SIFT。旋转鲁棒性: SURF>ORB~SIFT。模糊鲁棒性: SURF>ORB~SIFT。原创 2023-01-30 14:36:14 · 419 阅读 · 1 评论 -
read_image Error #5200 in read_image: HALCON error #5200: File not found
read_image 前加一句原创 2023-01-29 13:16:36 · 403 阅读 · 0 评论 -
【C++11 =default 和 =delete】
C++ 的类有四类特殊的成员函数,分别为:默认构造函数,析构函数,拷贝函数以及拷贝赋值函数。如果程序没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,编译器会隐式地为这个类生成一个默认的特殊成员函数。上面的程序有内存泄漏的问题,因为这种情况下,会调用基类X的析构函数,并非Y的析构函数。 (1) defaulted 函数特性仅用于类的特殊成员函数,且该特殊成员函数没有默认参数。为了显式的禁用某个函数,C++11 标准引入了一个新特性:deleted 函数。原创 2022-10-29 13:21:14 · 173 阅读 · 0 评论 -
【c++11之智能指针】
在C++中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smartpointer)。智能指针是存储指向动态分配(堆)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时,自动地销毁动态分配的对象,防止内存泄露。智能指针的核心实现技术是引用计数,每使用它一次,内部引用计数加1,每析构一次内部的引用计数减1,减为0时,删除所指向的堆内存。c++中用的最多的是下面三种智能指针C++11中提供了三种智能指针,使用这些智能指针时需要引用头文件。原创 2022-10-11 17:37:01 · 449 阅读 · 0 评论 -
【make_shared的使用】
>原创 2022-10-11 16:43:20 · 2485 阅读 · 0 评论 -
【c++:引用,移动,和转发】
上面的例子可以看出,通过函数模板调用f,i并没有被+1,当我们将 i 绑定到 middle 的参数 t2 上后,传给 f 的是 t2,而 t2 只是一个普通的、非引用的类型 int,而不是对 i 的引用。拷贝构造函数不同的是,移动构造函数接受的是右值引用而非左值引用,并且经过移动构造函数,被移动的对象的资源将被”窃取“掉。在我们调用函数的时候,会把实参传递给函数,有时候我们传给函数的是左值,有时候给的是右值,有时候还可能给的是 const 类型。左值引用:对左值的引用,保存左值的地址。原创 2022-10-11 15:37:54 · 186 阅读 · 0 评论 -
【VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用】
第一个窗口是所选的Dll模块所使用的函数,分为:序数、提示、函数、入口点等讯息。它是 Depends 的克隆,支持 Windows 7 和 Windows 10 存根 dll。像 Dependency Walker 一样,它可以分析模块以查找丢失的导入的 dll 或函数。右边第二个窗口是所选Dll模块的所有的导出函数,也分为:序数、提示、函数、入口点等讯息。如何隐藏DLL中,导出函数的名称?左上角第一个窗口是Dll信息窗口,显示程序所需的Dll模块。如何隐藏DLL中,导出函数的名称?原创 2022-10-11 10:37:05 · 2415 阅读 · 0 评论 -
【C++ 内存池介绍与经典内存池的实现】
内存池(Memory Pool)是一种内存分配方式。通常我们习惯直接使用new、malloc等API申请内存,这样做的缺点在于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。原创 2022-10-11 09:43:46 · 221 阅读 · 0 评论 -
【C++内存池如何实现】
池化技术是计算机中的一种设计模式,主要是指:将程序中经常要使用的计算机资源预先申请出来,由程序自己管理,程序在使用时直接从“池”中获取,不仅保证了程序占有的资源数量同时减少资源的申请和释放时间。常见的池化技术有内存池、线程池、连接池等。原创 2022-10-10 18:45:01 · 1401 阅读 · 1 评论 -
【C++ 之 C++ 操作 json 文件(C++读写json文件)及jsoncpp配置详解】
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。原创 2022-10-10 16:43:23 · 7039 阅读 · 0 评论 -
【python之subprocess模块详解】
args: 要执行的shell命令,默认应该是一个字符串序列,如[‘df’, ‘-Th’]或(‘df’, ‘-Th’),也可以是一个字符串,如’df -Th’,但是此时需要把shell参数的值置为True。shell: 如果shell为True,那么指定的命令将通过shell执行。如果我们需要访问某些shell的特性,如管道、文件名通配符、环境变量扩展功能,这将是非常有用的。原创 2022-09-25 21:42:37 · 793 阅读 · 0 评论 -
【Halcon句柄操作】
在Windows操作系统下,句柄代表一个标识符,通常是一个整数,和内存管理机制有关。一般句柄的命名都带有handle,使用时注意即可。对于Halcon新人而言,往往不注重句柄的清除问题,这类似于C++中new,delete一样,如果句柄不清除的话,回导致软件运行过程中占用内存越来越大。不仅仅Halcon存在句柄,很多开放的SDK都会有句柄,比如说海康相机SDK中的handle代表相机设备句柄,通过句柄可以更改相机的参数比如说,刚新建一个halcon项目时,可以看到。原创 2022-09-25 21:06:37 · 2070 阅读 · 0 评论 -
【用C++实现:将16进制转换为10进制】
或者char str[]={‘h’,‘e’,‘l’,‘l’,‘o’,’ ‘,‘w’,‘o’,‘r’,‘l’,‘d’,’\0’};第一种:strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到’\0’停止。(3)关于字符串计数的问题:strlen函数求出的字符串长度是有效长度,是不包含末尾的’\0’的,所以在最后求sum的值的时候,用n-1-i而不是减2。原创 2022-09-25 21:01:24 · 5044 阅读 · 0 评论 -
【c++string截取字符串】
C++的string类提供了大量的字符串操作函数,提取字符串的一部分,可采用substr函数实现。该函数功能为:返回从pos开始的n个字符组成的字符串,原字符串不被改变。参数2:n是可参数,表示取多少个字符,不填表示截取到末尾。参数1:pos是必填参数。原创 2022-09-25 20:58:31 · 6160 阅读 · 0 评论 -
【Opencv中的图像深、浅拷贝】
图像拷贝分为两类:浅拷贝 和 深拷贝先简单说说cv::Mat类,该类是用于保存图像以及其他矩阵数据的数据结构。当cv::Mat实例化后分配内存;当对象离开作用域后,分配的内存自动释放。原创 2022-09-20 18:19:05 · 1631 阅读 · 0 评论 -
【使用消息队列在线程之间交换数据(生产者消费者)】
【代码】【halcon多线程】原创 2022-09-20 15:56:20 · 290 阅读 · 0 评论 -
【halcon向量】
命名法:元组向量(或图标对象向量)称为一维,元组向量称为二维,依此类推。(因此,元组或图标对象的维数为零)。向量是可以容纳任意数量元素的容器,所有元素都必须具有完全相同的变量类型(即元组、图标对象或向量)。原创 2022-09-20 15:38:37 · 697 阅读 · 0 评论 -
【C++友元函数和友元类】
私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦。C++ 是从结构化的C语言发展而来的,需要照顾结构化设计程序员的习惯,所以在对私有成员可访问范围的问题上不可限制太死。C++ 设计者认为, 如果有的程序员真的非常怕麻烦,就是想在类的成员函数外部直接访问对象的私有成员,那还是做一点妥协以满足他们的愿望为好,这也算是眼前利益和长远利益的折中。原创 2022-09-20 15:26:45 · 91 阅读 · 0 评论 -
【使用OpenCV裁剪图像】
裁剪是从图像中移除所有不需要的物体或区域。甚至可以突出显示图像的特定特征。没有使用OpenCV进行裁剪的特定函数,NumPy数组切片是做这项工作的。读取的每个图像都存储在一个2D数组中(对于每个颜色通道)。简单地指定要裁剪区域的高度和宽度(以像素为单位)。下面的代码片段展示了如何使用Python和c++裁剪图像。在本文中,您将进一步了解这些细节。原创 2022-09-20 15:18:14 · 680 阅读 · 0 评论 -
【OpenCV画任意圆弧曲线】
逆时针画圆弧,原理:将360度分割成36份,分别标出每10度角度时的坐标点,然后将每个点连接起来。原创 2022-09-20 15:06:42 · 588 阅读 · 0 评论 -
【Halcon图像拟合圆】
在半导体行业,如PCB集成电路板,提供了Mark点,辅助视觉定位。而Mark点一般为圆形。视觉系统,需要抓取圆,进行精准定位。原创 2022-09-20 15:04:15 · 1739 阅读 · 0 评论 -
【Halcon边界轮廓提取与圆弧段拟合】
【代码】【Halcon边界轮廓提取与圆弧段拟合】原创 2022-09-20 14:58:29 · 1230 阅读 · 0 评论 -
【C++实现反射---RTTR库的使用】
使用过C#或者Java 的童鞋,应该对这些语言提供的反射机制有所了解。由于我们最近开发的产品使用的是C++语言,然而这种语言并没有内置反射这种机制。于是从网上进行了调研,发现了一些不错的提供C++反射支持的库,如CPP-Reflection、Vlpp、ponder等。我们的产品是用VS2013开发的,对C++11的支持不够完善,这些库一般要用VS2015才能编译。),有兴趣的童鞋可以自行编译,这里我提供了使用VS2013编译的。原创 2022-09-17 21:40:38 · 2474 阅读 · 0 评论 -
【C++利用auto对std::vector进行遍历时auto的类型】
具体的探究过程请看下文。原创 2022-09-15 16:51:47 · 1113 阅读 · 0 评论 -
【vector常用的6种初始化方法】
list3初始化为两个迭代器指定范围中元素的拷贝,范围中的元素类型必须与list3 的元素类型相容,在本例中list3被初始化为{3,4,5,6}。注意:由于只要求范围中的元素类型与待初始化的容器的元素类型相容,因此迭代器来自不同的容器是可能的,例如,用一个double的list的范围来初始化list3是可行的。这种初始化方法特别适合于获取一个序列的子序列。list 初始化为列表中元素的拷贝,列表中元素必须与list的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。原创 2022-09-15 16:48:07 · 1302 阅读 · 0 评论 -
【C++11using用法】
C++11中using关键字的主要作用是:为一个模板库定义一个别名。下面列举出using的几种用法:1、用法一:引用命名空间using namespace std;using 还可以指定别名,比如using SO3d = SO3; 那么它和typedef ,有什么区别?此外,using可以指定模板的别名,而typedef不行3、用法三:子类引用基类成员假如子类私有继承父类,子类无法使用父类的成员(变量,函数等),但是使用using可以访问,code如下:注:此时也只可通过using访问基类的pub原创 2022-09-15 10:26:33 · 484 阅读 · 0 评论 -
【C++·类·const】
const成员不能调用非static与const的方法,但是可以调用constructor、destructor。属于const成员的成员变量不能被改变,但是可以通过const成员去改变static变量。加static是不行的,因为static函数不能调用非static的成员变量。const方法不能改非static的变量,也不能调用非static函数。在初始化前面加上const关键字以定义const成员。所以我们将其定义为const方法。怎么让它顺利运行呢?原创 2022-09-15 10:23:15 · 178 阅读 · 0 评论 -
【C++初始化列表】
初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋值操作。使用初始化列表主要是基于性能问题,对于内置类型,如int, float等,使用初始化类表和在构造函数体内初始化差别不是很大,但是对于类类型来说,最好使用初始化列表,为什么呢?这里i的值是未定义的,虽然j在初始化列表里面出现在i前面,但是i先于j定义,所以先初始化i,但i由j初始化,此时j尚未初始化,所以导致i的值未定义。成员是按照他们在类中出现的顺序进行初始化的,而不是按照他们在初始化列表出现的顺序初始化的,看代码。原创 2022-09-15 10:20:30 · 85 阅读 · 0 评论 -
【c++获取系统时间】
【代码】【c++获取系统时间】原创 2022-09-15 10:12:44 · 161 阅读 · 0 评论