C++
文章平均质量分 94
蘇丶
这个作者很懒,什么都没留下…
展开
-
C++面试题
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动转载 2017-08-26 16:49:49 · 621 阅读 · 2 评论 -
C++文件流
ifstream是文件输入流类 ofstream是文件输出流类 fstream是文件输入输出流 要利用这些类来定义文件流对象,在程序开头应该包括如下预处理命令:#include <fstream>#include<ifstream>#include<ofstream>一丶文件流的建立1.文件打开方式ifstream file1;//定义一个输入流类对象file1.open("C:\\cp原创 2018-03-21 16:42:42 · 209 阅读 · 2 评论 -
光场相机重聚焦原理介绍及代码解析
光场相机主要是记录了光线的方向和强度,记录了四维信息,因此具有深度信息,并可以实现重聚焦等对焦和变焦聚焦顾名思义,就是聚焦在某一物体上,由于拍照的时候景深问题,不能使所有物体全部清楚,因此可以通过对焦或者是变焦,聚集在某一平面上,使该平面上的物体清晰。对焦就是改变传感器与主镜头的距离来实现这一过程的 ,而变焦改变的是主镜头的焦距实现这一过程,可以自己琢磨一下就能明白。重聚焦公式...原创 2018-05-25 21:25:02 · 17143 阅读 · 39 评论 -
Tenengrad梯度函数清晰度评价C++实现
先放个代码,原理还没来得及写double Thenengrad(Mat &amp;amp;amp;img){ double Grad_value = 0; double Sx, Sy; for (int i = 1; i &amp;amp;lt; img.rows-1; i++) { //定义行指针 uchar *current_ptr = (uchar*)i...原创 2018-07-01 15:31:18 · 5246 阅读 · 1 评论 -
Opencv指针访问每一个像素值
利用opencv访问单通道图像中的像素值#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>#include<iostream>using namespace cv;using namespace std;int main(){ Mat img = imread("MRF_focu...原创 2018-07-01 21:53:05 · 1535 阅读 · 0 评论 -
EVA改进(点锐度算法)图像清晰度评价方法C++实现
根据王鸿南论文中的方法实现《图像清晰度评价方法研究 》 《图像清晰度评价方法研究 》 跟求梯度没什么区别,只不过是换了一个模板double PVA_Grad(Mat &amp;amp;img){ double P = 0; for (int i = 1; i &amp;lt; img.rows - 1; i++) { //定义行指针 uchar *...原创 2018-07-03 14:31:36 · 4092 阅读 · 3 评论 -
C++调用Python函数(一)——配置及测试
想用讯飞的接口去识别英语字符和文章,但是用C++去调接口很麻烦,于是用Python写了调用讯飞接口的函数,然后用C++去调用Python的函数,弄通了之后感觉不是很麻烦,但是弄得时候还是有点懵逼,记录一下吧一丶配置问题1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库右击项目-&amp;gt;...原创 2018-07-26 17:30:37 · 4788 阅读 · 3 评论 -
C++调用Python函数(二)——调用函数并输出返回值
上一篇博客介绍了如何配置C++调用Python环境: C++调用Python环境配置调用的Python函数hello.py:def add_num(a,b): return a+bC++调用Python:#include &lt;Python.h&gt;#include&lt;iostream&gt;using namespace std;int main(...原创 2018-07-26 17:37:08 · 9040 阅读 · 5 评论 -
Python调用C++ 编写的dll动态库函数
前两篇博客是c++调用python程序: C++调用Python函数(二)——调用函数并输出返回值 C++调用Python函数(一)——配置及测试一丶C++ 编译类动态库------------**1)新建生成.dll文件的空项目**![这里写图片描述](https://img-blog.csdn.net/20180730165252513?watermark/2/text/a...原创 2018-07-30 17:07:25 · 27886 阅读 · 26 评论 -
LeetCode所有题目答案汇总
最近再刷leetcode题目,找到了这个大神的博客总结,收藏一下LeetCode All in One 题目讲解汇总(持续更新中…)转载 2018-07-31 10:39:06 · 58253 阅读 · 0 评论 -
C++字符串find,find_first_of,find_last_of
1.find说明:查找字符串str1首字符在另一个字符串str中出现的位置,但是str1必须为其子字符串 str1.find(str2); // 从串str1中查找时str2,返回str2中首个字符在str1中的地址 str1.find(str2,5); // 从str1的第5个字符开始查找str2 ...原创 2018-10-14 22:27:36 · 9794 阅读 · 0 评论 -
GMM混合高斯背景建模C++结合Opencv实现(内附Matlab实现)
最近在做视频流检测方面的工作,一般情况下这种视频流检测是较复杂的场景,比如交通监控,或者各种监控摄像头,场景比较复杂,因此需要构建背景图像,然后去检测场景中每一帧动态变化的前景部分,GMM高斯模型是建模的一种方法,关于高斯建模的介绍有很多博客了,大家可以去找一找,本篇博客主要依赖于上一个老兄,他用matlab实现了GMM模型,我在其基础上利用C++和OpenCV进行了重写,下面会给出C++代码,希...原创 2018-11-04 21:55:10 · 5792 阅读 · 2 评论 -
模板类——string类方法总结
string类string类是C++标准库的一个重要的部分,也是字符串的一种数据类型,相对于char*字符串它更方便强大,我们不必担心内存是否足够、字符串长度等等,而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下的需要。我们可以用= 进行赋值操作,== 进行比较,+ 做串联等基本赋值方法有以下赋值方式: string name(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;q原创 2018-11-10 14:20:10 · 875 阅读 · 0 评论 -
C++ STL中容器的使用全面总结
转载自:https://blog.csdn.net/u014465639/article/details/70241850一、容器的定义 在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法。...转载 2018-11-30 15:20:38 · 2746 阅读 · 0 评论 -
C++输入输出格式控制
一丶输入输出宽度控制setw(int n): 设置输入输出宽度,等价于io.width(n)cout<<setw(10)<<123<<setw(10)<<456<<endl//结果: 123 456二丶浮点数输出格式控制resetionsflags:为默认设置,浮点数按浮点格式输出 fixed: 浮点数按定点格式输出,保留小数点后6位 scientific: 浮点数按指数格式原创 2018-03-21 16:23:24 · 2105 阅读 · 0 评论 -
K-D树数据结构介绍及C++实现
什么是K-D树? K-D树是把K维空间中的点组织起来的空间划分数据结构,与四叉树不同的是,K-D树对空间的划分不是按照某种固定模式进行的,对空间的划分更有效可参考上一篇博客:有详细的k-d树介绍和搜索方式 K-D树数据结构介绍以下图片也是K-D树的介绍,本篇主要贴出c++实现代码: C++实现K-D树一丶kdtree.h//kdtree.h#pragma once原创 2018-03-13 20:52:13 · 2131 阅读 · 1 评论 -
C++ 继承--子类型关系
在公有继承的时候,派生类的对象可以作为基类的对象进行处理,派生类是基类的子类型子类型关系作用: 子类型关系使得在任何需要基类对象的地方都可以使用共有派生类的对象进行代替,从而可以使用相同的函数统一处理基类对象和派生类对象,可以提高程序的效率,是实现多态的重要基础之一class base//声明基类{public: void print(){cout<<"我是基类中的成员函数"}//基类原创 2018-03-19 21:48:51 · 1087 阅读 · 0 评论 -
基于SIFT特征的全景图像拼接
基本步骤 1 读入两张图片并分别提取SIFT特征2 利用k-d tree和BBF算法进行特征匹配查找3 利用RANSAC算法筛选匹配点并计算变换矩阵4 图像融合SIFT算法以及RANSAC算法都是利用的RobHess的SIFT源码,前三个步骤RobHess的源码中都有自带的示例。 1 SIFT特征提取直接调用RobHess源码(见RobHess的SIFT源码分析:综述 http://bl转载 2017-08-30 22:36:23 · 4738 阅读 · 1 评论 -
二维坐标排序
在提取光场子孔径图像重要步骤:微透镜中心点排序 由于opencv提取到的微透镜中心坐标不是按从上到下从左到右的顺序,因此需要对中心点进行排序; 这个问题就类似于二维坐标排序: 注:这个图是CSDN论坛上面的一个人问的类似的问题,我拿来用一用。首先我们先看一下取得中心点的坐标 同一行的中心点坐标可能会相差几个数,但是他们是属于同一行,然后在同一行中我们要从左到右给中心点进行排序。 比原创 2017-10-31 19:07:14 · 10234 阅读 · 5 评论 -
特征点匹配---最近邻点比次近邻点
sift特征点直接运用BruteForce方法进行匹配会出现很多错误,因此我们运用最近邻点比次近邻点进行限制,可大大提高特征点匹配的正确率。 即:bestmatchBFMatcher matcher(NORM_L2, false);//定义一个匹配对象 vector<vector<DMatch>> matches2;//定义一个容器用来装最近邻点和次近邻点 vector<DMatc原创 2017-11-09 11:33:54 · 10058 阅读 · 0 评论 -
C++ ——vector作为函数返回值用法
在实际应用过程中,我们经常需要保存一系列的数据,有可能是一个值,点等,这时我们会用到vector。 如下所示:vector&amp;amp;lt;int&amp;amp;gt;vector&amp;amp;lt;float&amp;amp;gt;与opencv结合使用时可能还会有:vector&amp;amp;lt;Point&amp;amp;gt;,vector&amp;amp;原创 2018-03-07 17:47:24 · 54258 阅读 · 13 评论 -
光场子孔径图像提取(C++实现)
光场光线在一个空间中的分布,不仅可以记录光线的强度,还可以记录光线的方向,光场相机与普通相机的不同之处是微透镜阵列,也就是在主透镜 和传感器之间加入了微透镜阵列,如图所示: 可以通过下面链接了解一下光场: 漫谈计算摄影学 论文: 《Light Field Photography with a Hand-held Plenoptic Camera》——Ren NG概念:1...原创 2018-03-08 14:17:35 · 5470 阅读 · 13 评论 -
C++ 求vector最大值最小值索引位置
使用STL的Vector时,利用函数 max_element,min_element,distance可以获取Vector中最大、最小值的值和位置索引:参考:http://stackoverflow.com/questions/2953491/finding-the-position-of-the-max-element代码:[cpp] view plain copy <span style=“转载 2018-03-16 09:16:47 · 6163 阅读 · 1 评论 -
C++构造函数和析构函数
一丶构造函数构造函数的作用是在对象被创建时利用特定的值构造对象,对对象进行初始化,即对数据成员进行初始化,构造函数也是类的成员函数,它具有一些特性:1.构造函数的名字和类的名字相同 2.构造函数可以具有一个或者多个参数,构造函数可以重载 3.构造函数没有返回类型 4.在创建一个对象的时候,系统自动调用构造函数举例说明:class Myclass{public: ...原创 2018-03-02 19:13:24 · 1472 阅读 · 1 评论 -
C++静态成员和常成员
一丶静态成员静态成员包括静态数据成员和静态函数1.静态数据成员类中的非静态数据成员,每一个类对象都拥有一个副本,即每一个对象的同名数据成员可以存储不同的数值,这是保证了每个对象拥有区别于其他对象的特征。 而静态成员是不管创建了多少个对象,他们之间只有一个副本,也就是所有对象都共享这个静态数据成员。静态成员的声明要是用static关键字class Myclass{ p...原创 2018-03-03 11:10:46 · 663 阅读 · 0 评论 -
C++派生类对基类成员的访问属性
1.公有继承方式 基类私有成员——>派生类私有成员 基类公有成员——>派生类公有成员 基类保护成员——>派生类保护成员2.私有继承方式 基类私有成员——>派生类私有成员 基类公有成员——>派生类私有成员 基类保护成员——>派生类私有成员3.保护继承方式 基类私有成员——>派生类私有成员 基类公有成员——>派生类保护成员 基类保护成员——>派生类保护成员原创 2018-03-19 10:22:38 · 1973 阅读 · 2 评论 -
C++ 多继承二义性与虚基类
一丶二义性问题在派生类中对基类成员的访问应该是唯一的,但是在多继承中这种访问可能不唯一,这是就会产生对基类成员访问的二义性。 二义性有以下两种情况: 1)派生类继承自两个基类,两个基类中具有相同的成员class base1{public: void fun();};class base2{public: void fun();}class derived:publ原创 2018-03-19 11:19:09 · 813 阅读 · 0 评论 -
C++实现冒泡排序
冒泡排序原理: 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。C++实现:#include<iostream>using namespace原创 2018-03-23 14:18:01 · 487 阅读 · 0 评论 -
C++实现常用排序算法
目录冒泡排序 鸡尾酒排序 选择排序插入排序二分插入排序 希尔排序 归并排序堆排序快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可转载 2018-03-23 14:48:34 · 442 阅读 · 0 评论 -
C++多态性和虚函数
非静态函数声明的前面加上virtual修饰符,即可以把该函数声明为虚函数virtual const string name()const{return base_name;}//函数声明时在前面加virtual修饰符虚函数特性:1.虚函数可以被派生类重写,从而提供该函数的适用于派生类的专门版本 2.虚函数可以不重写,这样继承下来的虚函数保持其在基类中的定义,即派生类和基类使用同一函数版本 3.虚原创 2018-03-19 21:21:36 · 787 阅读 · 0 评论 -
SIFT+RANSAC+反距离加权图像拼接融合(代码记录)
单纯记录一下之前的代码#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/opencv.hpp> #include<opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <cv.h&...原创 2019-04-09 20:25:17 · 1489 阅读 · 0 评论