C++
文章平均质量分 58
落花逐流水
从事人工智能,模式识别与智能系统
展开
-
windows TBB的使用
TBB在windows下的使用原创 2023-10-14 21:43:18 · 319 阅读 · 0 评论 -
C++程序加速方法
c++ 程序提高运行速度方法原创 2023-10-14 19:07:15 · 500 阅读 · 0 评论 -
Eigen库学习笔记(十五)Eigen获取最小值与最小值索引
Eigen获取当前行最小值与对应索引原创 2023-07-10 21:27:01 · 777 阅读 · 0 评论 -
一些加速库Blas OpenMP等
整个CUDA平台是通过运用显卡内的流处理器进行数学运算,并通过GPU内部的缓存共享数据,流处理器之间甚至可以互相通信,同时对数据的存储也不再约束于以GPU的纹理方式,存取更加灵活,可以充分利用统一架构的流输出(stream out)特性,大大提高应用效率。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。原创 2023-01-04 22:30:00 · 308 阅读 · 3 评论 -
小熊猫C++测试Eigen程序
小熊猫C++ IDE 之前只用过单文件程序测试,不知道怎样使用依赖库。根据IDE截面,盲猜有两种方式添加依赖库,于是实践一下。为了测试一个简单的程序去新建一个VS工程有点大材小用。项目–>项目属性–>文件夹–>头文件。方式一:设置makefile;项目->查看MakeFile。通过“+”添加依赖路径。原创 2022-12-16 18:39:55 · 815 阅读 · 2 评论 -
Friend 关键字
Friend class可以访问别的class中的private和protected成员,只要在这个类中声明了friend。通常可以使部分类访问其他类中的一些私有成员,例如在链表中,链表class作为节点class的friend,可以访问其私有成员。像Friend class一样,friend function可以访问其他类中的private和protected成员,friend function可以是。原创 2022-12-15 09:08:54 · 307 阅读 · 0 评论 -
C++ 链表笔记(二)
这个列子还有一个收获,是头文件conio.h,不是C标准库中的头文件,在C standard library,ISO C 和POSIX标准中均没有定义。conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。大部分DOS,Windows 3.x,Phar Lap,DOSX,OS/2 or Win32平台上的C编译器提供此文件,UNIX 和Linux平台的c编译器通原创 2022-12-07 22:56:29 · 461 阅读 · 0 评论 -
C++ 链表笔记(一)
2. 链表操作编写一个函数完成如下功能:将一个带头结点的单链表分解为两个具有相同构造的链表B和C,其中B表的节点为A表中值小于0的节点,而C表的节点为A表中值大于0的节点(链表A中的元素为非零整数,要求B、C表利用A表的节点)。要求,在主函数中调用上面的函数测试。原创 2022-12-07 00:05:45 · 90 阅读 · 0 评论 -
OpenCL笔记一
先以图像旋转的实例,具体介绍OpenCL编程的步骤。原创 2022-12-04 17:31:27 · 391 阅读 · 0 评论 -
随机数生成
随机数生成特定范围的非负数——uniform_int_distribution随机浮点数——uniform_real_distribution随机布尔值——bernoulli_distribution总结我们知道,C 中的随机数函数只有一个 rand( ),想生成某一区间范围内的随机数乃至随机的浮点数都十分麻烦。而 C++11 中提供的 random 库解决了这一问题,它能让我们方便地生成需要的随机值。下面将介绍如何利用 random库中的组件生成符合条件的随机数。random 库中的组件分为两类—原创 2022-03-12 23:11:21 · 2876 阅读 · 0 评论 -
Visual studio中使用OpenMP
Visual studio中使用OpenMP1. OpenMP的指令2. OpenMP的常用库函数3. OpenMP的子句1. OpenMP的指令OpenMP的指令有以下一些:(常用的已标黑)parallel,用在一个代码段之前,表示这段代码将被多个线程并行执行for,用于for循环之前,将循环分配到多个线程中并行执行,必须保证每次循环之间无相关性。parallel for, parallel 和 for语句的结合,也是用在一个for循环之前,表示for循环的代码将被多个线程并行执行。sect原创 2022-03-03 19:42:52 · 3693 阅读 · 1 评论 -
Visual Studio从代码生成函数
Visual Studio从代码生成函数Quick Actions and Refactiorings… --> Extract Function–>自定义函数名字–>选择函数类型软件会自动为你生成函数声明和实现,但是程序也有些不智能,会生成具体变量名的程序,以便直接替换原来位置的程序段。所以还是需要人工修改成通用的函数。...原创 2022-03-02 10:21:23 · 812 阅读 · 0 评论 -
c++ KMeans
c++ KMeans1、3D点聚类CodeCMakeLists.txt2、一般KMeans一、Kmeans算法二、K-均值聚类的一般流程三、算法设计和实现1、3D点聚类vtk-examples/Cxx/InfoVis/KMeansClusteringCodeKMeansClustering.cxx#include <vtkActor.h>#include <vtkDoubleArray.h>#include <vtkIntArray.h>#include原创 2022-02-28 14:20:23 · 775 阅读 · 0 评论 -
3D 算子实现
3D 算子实现想实现一下3d操作,还没有完成。#pragma onceclass Mat3d{public: Mat3d(); ~Mat3d(); int w; int h; int d; Mat3d(int w, int h, int d); float& operator()(int i, int j, int k); void operator=(float const & value);private: float* data;};Mat3d原创 2022-01-20 19:44:21 · 2464 阅读 · 0 评论 -
Numcpp编译与使用
Numcpp编译与使用1、Numcpp2、测试程序1、Numcpp假如你很“不幸”是一名从事机器学习开发的C++程序员,一定很羡慕Python,因为很多热门的软件包都是专门为Python开发。C++程序员只能看着眼馋,甚至包括最热门的NumPy也无法使用。这就是C++版本的NumPy,名为NumCpp,是一位叫David Pilger的程序员开发的。从此用#include也能导入头文件,就像Python程序员用import一样容易。二者除了语法上的差异,调用函数的名称也几乎一致。就算有什么不懂,你也原创 2022-01-20 11:20:01 · 1838 阅读 · 0 评论 -
Eigen库学习笔记(六)cmake调用Eigen
Eigen库学习笔记(六)cmake调用Eigen1、编译Eigen2、cmake 引用Eigen库1、编译Eigen因为Eigen库是基于模板实现的,使用的是源码,编译并不会生成动态库或静态库。编译的目的是为了生成可以使用的包。主要是生成这几个文件2、cmake 引用Eigen库对于Eigen库的使用,可以使用set指定到 share/eigen3/cmake目录,也可以在cmake-gui中指定到这个路径。cmake_minimum_required(VERSION 3.3)PROJ原创 2021-12-26 22:19:53 · 6446 阅读 · 0 评论 -
C++ 异步回调
C++ 异步回调准备记一下这方面的笔记。原创 2021-12-25 09:10:43 · 1375 阅读 · 0 评论 -
c++实现神经网络常用函数
c++实现神经网络常用函数1、linspace2、meshgrid3、flatten4、vstack5、1、linspace2、meshgrid3、flatten4、vstack5、原创 2021-12-23 21:00:09 · 640 阅读 · 0 评论 -
double比较大小
double比较大小因为double,float表示的都是不准确数值,不能直接使用等号判等,只能使用差值小于阈值判等。doubl a =1.0, b = 1.0;bool eompare = fabs(a -b) < EBL_EPSILON;顺便整理以下可用的宏://-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+//// Constants////-+-+-+-+-+-+-原创 2021-12-22 14:28:15 · 2388 阅读 · 0 评论 -
类内函数名前static关键字作用
看到写的比较好的就搬过来了。1.函数名前加static关键字函数就被定义成为静态函数。函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。定义静态函数的好处:<1> 静态函数不能被其他文件所用。<2> 其他文件中可以定义相同名字的函数,不会发生冲突。<3> 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。引申学习:static变量与static函数原创 2021-10-30 10:34:03 · 681 阅读 · 0 评论 -
vscode配置Git管理工具GitLens
之前一直使用SVN管理代码,觉得很好用,现在换工作了,新公司使用git管理代码,所以做一下git的使用笔记。Visual Studio Code是微软公司推出的一款跨平台代码编辑(Edit)-编译(Build)-调试(Debug)工具。git多人协作的时候需要查看日志,如果能在当前代码中查看到那是很方便的一件事,能省去很多时间去其他工具查看,提高工作效率。VsCode中的GitLens插件刚好能满足这个需求,而且搭配Cmder使用,很舒服,不会出现换行不工整的问题,还可以设置自己喜欢的主题。从远程原创 2021-08-12 13:55:29 · 5866 阅读 · 4 评论 -
c++ 设计模式(一)
我也是不经意间看到的,之前也学习过设计模式,只不过总是觉得“纸上得来终觉浅”,总要动手实践一下才会有所体会和感悟。如果英语还可以的话就看这个:JakubVojvoda/design-patterns-cpp如果英语比较菜就看这个:liu-jianhao/Cpp-Design-Patterns参考:分享几个适合初学者的C语言/C++开源项目!涉及从基础语法到算法另外还看到一个比较好的c项目(不是设计模式):AllAlgorithms/c...原创 2021-07-17 11:19:04 · 80 阅读 · 0 评论 -
vscode配置c++环境
我主要遇到的问题是,可以编译成功,无法调试,后来根据 miDebuggerPath发现了问题所在,之前安装msys2 纯粹是为了编译boost库用的,在C:\msys64\mingw64\bin\目录下没有gdb.exe,所以我需要安装gdb.exe打开mingw64.exe执行命令安装gdbpacman -Syupacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-cmake mingw-w64-x86_6原创 2021-07-15 23:01:31 · 163 阅读 · 0 评论 -
使用sift特征、surf特征、orb特征及单应性矩阵定位物体
使用opencv4.5.2#include <opencv2/opencv.hpp>#include <vector>using namespace std;using namespace cv;int main(int argc, char* argv[]){ cv::Mat box = cv::imread("imgL.jpg"); cv::Mat scene = cv::imread("imgR.jpg"); // 创建SIFT特征提取 auto detec原创 2021-07-11 10:57:34 · 445 阅读 · 0 评论 -
sift、surf等特征提取测试程序
使用opencv4.5.2,因为sift专利到期,在opencv中可以直接使用,surf因为专利原因需要编译opencv-contrib才可以使用。1、使用sift特征提取关键点#include <opencv2/opencv.hpp>int main(){ cv::Mat imageL = cv::imread("imgL.jpg"); cv::Mat imageR = cv::imread("imgR.jpg"); //提取特征点方法 //SIFT cv::Ptr<原创 2021-07-11 09:23:11 · 282 阅读 · 1 评论 -
c++获取CPU信息
#include <iostream>using namespace std;#define BYTE unsigned char#define UINT unsigned intint main(int argc, char* argv[]){ BYTE szCPU[16] = { 0 }; //定义存放CPU类型的数组 UINT uCPUID = 0U; //定义存放CPU ID的数组 _asm //开始执行汇编 .原创 2021-07-10 23:53:04 · 3566 阅读 · 4 评论 -
opencv bfs测试程序
不记得代码是从哪里来的了,代码功能:使用BFS标记连通域个数想了一下bfs和dfs实现时的区别在于使用的数据结构不一样,BFS使用Queue,先入先出(FIFO)便于广度优先遍历,DFS使用stack,后入先出(LIFO)便于深度优先遍历。#include <opencv2/opencv.hpp> #include <math.h>using namespace std;using namespace cv;typedef unsigned long uint32原创 2021-07-10 08:41:20 · 185 阅读 · 0 评论 -
c++正则表达式 日期格式匹配
std::regex reg("(\\d{4})-(0\\d{1}|1[0-2])-(0\\d{1}|[12]\\d{1}|3[01])\\s(0\\d{1}|1\\d{1}|2[0-3]):[0-5]\\d{1}:([0-5]\\d{1})");bool ff = regex_match("2015-03-05 12:08:20", reg);//ff=true1. 介绍正则表达式(Regular Expression,常简写为regex、regexp或RE)。正则表达式通常被用来检索、替换那些符原创 2021-06-30 16:09:13 · 1522 阅读 · 0 评论 -
opencv 图像转换
对于opencv图像,只有当图像通道数一样时才可以使用convertTo,转换数据类型。需要改变通道数的时候使用cvtColor。不能一步到位使用convertTo实现即转换数据类型,有转换通道数。dstmat.convertTo(dstmat, CV_8UC1, 255);cv::cvtColor(dstmat, dstmat, cv::COLOR_GRAY2BGR);当发现有问题时可以调试,输出各个属性就可以发现问题。如下:dstmat.convertTo(dstmat, CV_8UC1原创 2021-06-30 09:00:58 · 463 阅读 · 0 评论 -
opencv c++获取轮廓
1、查找和绘制轮廓findContours 会找到vector<vector<cv::Point>> contours;vector<Vec4i> hierarchy;f4 = Mat::zeros(frame.rows, frame.cols, CV_8UC3);f5 = Mat::zeros(frame.rows, frame.cols, CV_8UC3);findContours(f2, contours, hierarchy, RETR_TREE,原创 2021-06-27 12:51:57 · 5460 阅读 · 5 评论 -
onnxruntime c++ 代码搜集
EfficientDet.h#include <core/session/onnxruntime_cxx_api.h>#include <cstring>#include <array>#include <cmath>#include <algorithm>#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highg原创 2021-06-27 10:07:20 · 2949 阅读 · 3 评论 -
第一个onnxruntime c++项目
同样是图像分割的c++ inference,已经实现过原创 2021-06-27 08:12:08 · 2249 阅读 · 4 评论 -
c++堆和栈
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态原创 2021-06-24 22:31:27 · 253 阅读 · 0 评论 -
在线编译器
无意中看到在线编译器:C++在线编译器以后想要简单编译/测试程序段可以直接在线编译测试,省去新建项目编译的麻烦。原创 2021-06-24 22:16:50 · 201 阅读 · 2 评论 -
为什么使用拷贝构造函数
资源来自于网络整理。也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。为了说明复制构造函数作用,我先说说我们在编程时会遇到的一些问题。对于C++中的函数,我们应该很熟悉了,因为平常经常使用;对于类的对象,我们也很熟悉,因为我们也经常写各种各样的类,使用各种各样的对象;对于指针的操作,我们也不陌生吧?嗯,原创 2021-06-24 14:10:54 · 1532 阅读 · 0 评论 -
c++多线程、智能指针
1、线程第一题:线程的基本概念、线程的基本状态及状态之间的关系?线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。状态之间的转换如下图所示:第二题:线程与进程的区别?1、 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。2、 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多原创 2021-06-23 22:36:32 · 1022 阅读 · 1 评论 -
tflite c++代码(二)
main.cpp/** * Copyright (c) 2020 Nobuo Tsukamoto * * This software is released under the MIT License. * See the LICENSE file in the project root for more information. */#include <fstream>#include <iostream>#include <map>#inclu原创 2021-06-21 10:32:28 · 744 阅读 · 1 评论 -
十种排序算法
参考:C++经典排序算法总结原创 2021-06-20 10:19:32 · 49 阅读 · 0 评论 -
tflite的c++代码
1、编写CMakeLists.txt# 添加set(TFLITE_LIBS /path-to-your/tensorflow-master/tensorflow/lite/tools/make/gen/linux_x86_64/lib/libtensorflow-lite.a)include_directories(/path-to-your/tensorflow-master/)include_directories(/path-to-your/tensorflow-master/tensorfl原创 2021-06-18 17:34:02 · 2544 阅读 · 0 评论 -
ncnn封装chineseocr-lite库支持配置文件
参考chineseocr-lite项目,将其中的ncnn框架的推理可执行程序封装成动态库。目前只计划封装一个windows动态库,并提供调用demo,而且封装的动态库支持配置文件增加模型,修改参数。配置文件使用toml格式的配置文件。后续会把内容补齐,请期待!...原创 2021-06-09 22:13:42 · 473 阅读 · 0 评论