自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++面向对象11:友元类

1.回顾友元函数友元函数是在类外定义的。在函数名之前没有MyTime::class MyTime{ // ... public: friend MyTime operator+(int m, const MyTime & t);//友元函数不是成员函数,不是类的成员,是类的朋友比如说,这个运算符重载,如果用成员函数,只能是当前这个类型(MyTime)和int m相加,如果反过来整数类型和MyTime相加就不行,因为要访问私有成员};MyTime operator

2022-05-02 23:53:47 803

原创 C++面向对象10:模板

一、模板1.函数模板函数模板不是类型、函数或任何其他实体。它是一个空壳子如果只是定义了一个模板。在编译的时候编译器看到这个模板,其实他不做任何事情。当模板的参数被指定了这个时候变压器会生成一个具体的函数。函数模板:空壳子template<typename T>T sum(T x, T y){ cout << "The input type is " << typeid(T).name() << endl; return

2022-05-02 23:41:16 1196

原创 C++面向对象9:OpenCV中的继承

1. cv::Mat_modules/core/include/opencv2/core/mat.hpp使Mat_更加C++化2. cv::Matxmodules/core/include/opencv2/core/matx.hppMat设计的初衷是给表达很大的矩阵用的,一张图像或者深度学习的数据在计算机视觉里面,我们也会使用很小的矩阵。比如说在成像原理过程中。我们会用一个三行4列的矩阵。去描述计算机的成像模型。也可使用3×3,4×4来描述模型的旋转(旋转矩阵),3*3卷积核

2022-05-02 22:29:51 2202

原创 C++面向对象8:继承与动态内存分配

如果类里面涉及动态内存申请,我们要特别的小心。我们需要重写拷贝构造函数等赋值运算符的重载来解决这个问题。如果有涉及了继承。有父类也有子类,这里面再去涉及动态的内存申请会变得更加麻烦。如果基类使用动态内存分配,并重新定义复制构造函数和赋值运算符,那么我们就不用考虑子类了。案例1:如果派生类中没有动态内存分配,,只是父类里面涉及,那就把父类里面写好就行了。子类不需要特殊操作案例2:如果在派生类中分配了动态内存,则应该重新定义拷贝构造函数和赋值运算符重载。case2伪代码class MyM

2022-05-02 22:02:16 387

原创 C++面向对象7:多态

目录一、虚函数二. virtual关键词三.纯虚函数四.析构函数一定是虚的一、虚函数class Person{ public: string name; Person(string n): name(n){} void print() { cout << "Name: " << name << endl; }};class Student: public Person{

2022-05-02 21:57:38 459

原创 C++面向对象6:继承

目录一、派生类1、继承基类(父类)子类继承自多个父类2、构造函数3.析构函数示例二、访问控制1.类的成员访问:2. protected3.不同的继承方式a)public继承b)protected继承c)private继承(最苛刻的继承)一、派生类1、继承基类(父类)class Base{ public: int a; int b;};子类class Derived: public Base/

2022-05-02 21:25:39 1185

原创 C语言:写好代码减少debug

目录一、如何写好代码减少debug以编写图像Mat矩阵的基本操作为例要求:一些建议:二.示例一、如何写好代码减少debug以编写图像Mat矩阵的基本操作为例要求:1.全部使用C语言利用struct定义矩阵数据结构而不是class2.创建一个矩阵3.删除一个矩阵4.拷贝矩阵5.两个矩阵相乘一些建议:1.不要使用int定义mat.cols和mat.rows,改用size_t,在64位操作系统上是64位无符号整数,表达的数据范围更大,使用int矩阵最

2022-05-01 22:50:29 828

原创 C++面向对象5:智能指针

目录1.智能指针2.std::shared_ptr3.std::unique_ptr4.模板类1.智能指针是一个类对象get()获得类对象中的指针,获取堆区指针只管申请,不管释放2.std::shared_ptr几个指针指向同一个对象,他们是共享的。这个对象如果没有指针指向,指针就会自动被删除。构造函数法std::shared_ptr<MyTime> mt1(new MyTime(10));std::shared_ptr<MyTi

2022-05-01 22:43:31 201

原创 C++面向对象4:指针和内存管理

目录1.使用char类型数组表达字符串的缺陷完整代码2.解决方案a.Hard Copyb.soft copy(OpenCV Mat/CvMat)1.使用char类型数组表达字符串的缺陷使用char类型数组表达字符串时有缺陷,比如越界等class MyString//定义一个类包装一下,让这个字符串更加安全{ int buf_len;//数组长度 char * characters;//数组指针 //动态内存申请: 不知道字符串有多长,.

2022-05-01 22:18:06 1146

原创 C++面向对象3:C++的默认操作

默认操作

2022-05-01 21:16:51 135

原创 C++面向对象2:运算符重载与友元函数

目录1.运算符重载(重新赋予运算符新的含义)回顾函数重载OpenCV运算符重载运算符重载2.自己实现字符串重载1.运算符重载(重新赋予运算符新的含义)回顾函数重载函数名一样,参数列表不同Mat add(Mat& A, Mat& B);Mat add(Mat& A, float b);Mat add(float a, Mat& B);Mat mul(Mat& A, Mat& B);Mat mul(Mat&

2022-05-01 10:54:44 2717

原创 C++面向对象1:类与对象

类与对象

2022-05-01 10:13:27 259

原创 C++基础10:并行加速与OpenCV数据结构

一.程序加速1.编程基本原则短、简洁、有效率2.代码优化策略 a)选择合适的算法(算法复杂度) b)代码简洁简单(易读) c)高效的内存读写(地址相连效率高) d)避免内存拷贝(代码会变得更加复杂)(指针) e)循环里面或者执行很多次不要加printf(),cout,会阻塞程序执行 f)查表法(计算机擅长整数的加法乘法)(三角函数精度要求不高用查表法)g)SIMD, O...

2022-04-30 23:34:41 1669

原创 C++基础9:函数2

1.默认参数(C++):让函数调用更加方便在函数声明里面给一些参数赋值float norm(float x, float y, float z);float norm(float x, float y, float z = 0);//,默认参数只能从尾部开始定义float norm(float x, float y = 0, float z);//上面定义过z,这里可以直接定义y,且默认参数不可重定义,只能设一次int main(){ cout << norm(3.0

2022-04-30 23:14:33 577

原创 C++基础8:函数1

函数

2022-04-30 18:11:19 488

原创 C++基础7:动态内存管理

目录一、C语言动态内存管理1.程序内存2.内存申请3.内存释放4.内存泄漏(内存浪费)二、C++动态内存管理1.操作符new2.释放delete一、C语言动态内存管理1.程序内存操作系统会在内存里给程序分配空间,用于程序运行a)stack栈:临时变量,局部变量b)heap堆:动态内存int a = 0;int b = 0;int c = 0;cout << &a << endl;cout <&lt..

2022-02-16 18:15:01 428

原创 C++基础6:指针

目录一、指针1.指针2.结构体指针3.二级指针4.常数指针二、数组和指针1.结构体数组2.数组名3.指针的代数操作4.当心指针越界5.数组和指针的区别一、指针1.指针a)声明:数据类型* 变量b)指针变量里面存的是整数是一个地址c)&变量,取变量地址d)*指针,取指针指向的内容int num = 10;     num 1.

2022-02-09 18:35:15 955

原创 C++基础5:结构体、联合体、枚举

目录一、结构体1.结构体struct2.结构成员对齐二、联合体三、枚举四、综合运用(L1范数为例)五、typedef一、结构体1.结构体struct把几个不同类型的成员打包在一起,形成新的数据类型struct Student{ char name[4]; int born; bool male; };struct Student stu;//C语言Student stu;//C++strcpy(stu.name, "Yu");用.

2022-02-01 19:17:48 816

原创 C++基础4:数组与字符串

目录一、数组1.初识数组2.变长数组3.未知长度数组4.数组元素的读写5.多维数组6.常量数组二、字符串1.数组字符串2.字符串长度3.常量字符串4.字符串的操作和属性获取5.string类一、数组1.初识数组a)一段连续内存,存放固定数目对象,一旦申请完毕,元素个数不可更改b)元素类型不定:基本数据类型(int, float, bool等)或structure, class, pointer, enumeration,int nu.

2022-02-01 17:56:20 968

原创 C++基础3:判断与循环

判断与循环

2022-02-01 17:26:27 1205

原创 C++基础2:数据类型

数据类型

2022-01-29 18:36:57 2649

原创 C++基础1:初识C++

介绍C/C++语言1.优点2.编译和链接3.debug4.预处理和宏5.输入输出6.GUI图形界面

2022-01-28 15:41:36 670

原创 OpenCV将图片合并成视频

#include<opencv2\opencv.hpp>#include<iostream>using namespace std;using namespace cv;int main(){ VideoWriter video("test.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25, Size(720, 576)); String img_path = "C:\\Users\\Administrator\\Desktop\\

2020-11-10 20:28:45 570 1

原创 OpenCV更改视频帧数

#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main() { VideoCapture cap("out.avi");//25帧视频 Mat frame; int w = int(cap.get(CAP_PROP_FRAME_WIDTH)); int h = int(cap.get(CAP_PROP_FRAME...

2020-11-02 21:02:21 2437

空空如也

空空如也

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

TA关注的人

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