C++
slsqtx_Lh
这个作者很懒,什么都没留下…
展开
-
Opencv(七)基于距离变换与分水岭的图像分割
图像分割:图像分割(Image Segmentation)是图像处理最重要的处理手段之一图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KMeans距离变换与分水岭介绍距离变换常见算法有两种不断膨胀/ 腐蚀得到基于倒角距离分水岭变换常见的算法基于浸泡理论实现cv::distanceTransform(InputArray src, Output原创 2020-08-24 19:35:36 · 367 阅读 · 0 评论 -
Opencv(六)模板匹配、轮廓检测、轮廓周围绘制矩形框和圆形框
模板匹配介绍模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。模板匹配介绍 – 匹配算法介绍OpenCV中提供了六种常见的匹配算法如下:计算平方不同计算相关性计算归一化平方不同计算归一化相关性计算归一化相关系数相关API介绍cv::matchTemplatematchTem原创 2020-08-24 19:31:10 · 3317 阅读 · 0 评论 -
Opencv(五)霍夫变换、直方图计算及对比
霍夫直线变换介绍Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间到极坐标空间转换相关API:标准的霍夫变换 cv::HoughLines从平面坐标转换到霍夫空间,最终输出是 表示极坐标空间霍夫变换直线概率 cv::HoughLinesP最终输出是直角坐标系下直线的两个点坐标cv::HoughLines(InputArray src, // 输入图像,必须8-bit的灰度图像OutputArray lines, // 输原创 2020-08-23 20:02:10 · 465 阅读 · 0 评论 -
Opencv(四)卷积及边缘检测sobel、laplacian、canny
自定义线性滤波卷积概念:卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)自定义卷积模糊:filter2D方法filter2D(Mat src, //输入图像Mat dst, // 模糊图像int depth, // 图像深度32/8Mat kernel, // 卷积核/模板Point anchor, // 锚点位置double delta // 计算出来的像素+delta)其中原创 2020-08-23 15:27:04 · 565 阅读 · 0 评论 -
Opencv(三)图像膨胀腐蚀及采样、基本阈值操作
形态学操作(morphology operators)-膨胀图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状形态学操作-腐蚀腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值相关AP原创 2020-08-22 19:45:25 · 456 阅读 · 0 评论 -
Opencv(二)图像融合、调整图像亮度与对比度、绘制形状与添加文字与图像模糊滤波
线性混合操作相关API (addWeighted):参数1:输入图像Mat – src1参数2:输入图像src1的alpha值参数3:输入图像Mat – src2参数4:输入图像src2的alpha值参数5:gamma值参数6:输出混合图像注意点:两张图像的大小和类型必须一致才可以#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;原创 2020-08-22 14:51:08 · 566 阅读 · 0 评论 -
利用python、C++实现数据结构(补充ing)
链表: struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; class ListNode: def __init__(self, x): self.val = x self.next = None原创 2020-05-21 10:20:58 · 199 阅读 · 0 评论 -
C++ 之文件读写操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作1文本文件1.1写文件写文件步骤如下:包含头文件#incl原创 2020-05-18 10:59:28 · 144 阅读 · 0 评论 -
STL- 常用算法(六)常用集合算法
算法简介:set_intersection // 求两个容器的交集set_union // 求两个容器的并集set_difference // 求两个容器的差集1 set_intersection功能描述:求两个容器的交集函数原型:set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2,原创 2020-05-18 10:43:42 · 182 阅读 · 0 评论 -
STL- 常用算法(五)常用算术生成算法
注意:算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric>算法简介:accumulate // 计算容器元素累计总和fill // 向容器中添加元素1 accumulate功能描述:计算区间内 容器元素累计总和函数原型:accumulate(iterator beg, iterator end, value);// 计算容器元素累计总和// beg 开始迭代器// end 结原创 2020-05-18 10:39:12 · 200 阅读 · 0 评论 -
STL- 常用算法(四)常用拷贝和替换算法
算法简介:copy // 容器内指定范围的元素拷贝到另一容器中replace // 将容器内指定范围的旧元素修改为新元素replace_if // 容器内指定范围满足条件的元素替换为新元素swap // 互换两个容器的元素1 copy功能描述:容器内指定范围的元素拷贝到另一容器中函数原型:copy(iterator beg, iterator end原创 2020-05-18 10:36:33 · 142 阅读 · 0 评论 -
STL- 常用算法(三)排序算法
算法简介:sort //对容器内元素进行排序random_shuffle //洗牌 指定范围内的元素随机调整次序merge // 容器元素合并,并存储到另一容器中reverse // 反转指定范围的元素1 sort功能描述:对容器内元素进行排序函数原型:sort(iterator beg, iterator end, _Pred);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// be原创 2020-05-15 10:56:06 · 87 阅读 · 0 评论 -
STL- 常用算法(二)查找算法
算法简介:find //查找元素find_if //按条件查找元素adjacent_find //查找相邻重复元素binary_search //二分查找法count //统计元素个数count_if //按条件统计元素个数1 find功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()函数原型:find(i原创 2020-05-15 10:50:38 · 124 阅读 · 0 评论 -
STL- 常用算法(一)遍历算法
概述:算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<functional>定义了一些模板类,用以声明函数对象。常用遍历算法算法简介:for_each //遍历容器t原创 2020-05-15 10:42:28 · 177 阅读 · 0 评论 -
STL常用容器(八)map/ multimap容器
map基本概念简介:map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值map和multimap区别:map不允许容器中有重复key值元素multimap允许容器中有重复key值元素map构造和赋值功能描述:对map容器进行构造和赋值操作函数原型:构造:原创 2020-05-14 21:13:15 · 109 阅读 · 0 评论 -
STL常用容器(七)set/ multiset容器
set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素set构造和赋值功能描述:创建set容器以及赋值构造:set<T> st; //默认构造函数:set(const set &st); //拷贝构造函数赋值:set&原创 2020-05-13 19:21:43 · 177 阅读 · 0 评论 -
STL常用容器(六)list容器
list基本概念**功能:**将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器list的优点:采用动态存储分配,不会造成内存浪费和溢出链表执行插入和删除操作十分方便,修改指针即可,不需要原创 2020-05-12 20:38:03 · 147 阅读 · 0 评论 -
STL常用容器(五)queue容器
queue 基本概念概念:Queue是一种先进先出**(First In First Out,FIFO)的数据结构,它有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为队列中进数据称为 — 入队 push队列中出数据称为 — 出队 popqueue 常用接口功能描述:栈容器常用的对外接口构造函数:queue<T> que; //queu原创 2020-05-12 20:29:45 · 154 阅读 · 0 评论 -
STL常用容器(四)stack容器
stack 基本概念概念:stack是一种先进后出**(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈 push栈中弹出数据称为 — 出栈 popstack 常用接口功能描述:栈容器常用的对外接口构造函数:stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式st原创 2020-05-12 20:25:52 · 99 阅读 · 0 评论 -
STL常用容器(三)deque容器
deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中...原创 2020-05-07 22:03:11 · 124 阅读 · 0 评论 -
STL常用容器(二)vector容器
vector基本概念原创 2020-05-06 21:57:14 · 128 阅读 · 0 评论 -
STL常用容器(一)string容器
string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstri...原创 2020-04-27 22:08:15 · 168 阅读 · 0 评论 -
C++数据结构之STL 概述
STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西C++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STLSTL基本概念STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(container) 算法(algor...原创 2020-04-27 21:44:19 · 288 阅读 · 0 评论