摘要:
二叉堆的本质是完全二叉树 大顶堆:每个节点的值都大于他的子节点 小顶堆:每个节点的值都小于他的子节点 二叉堆的根节点就是他的堆顶 堆的存储结构 虽然堆的数据结构是树,但是它并不是以链式结构存储的,而是顺序存储(数组) 通过数组下标可以定位父亲节点或者孩子节点,堆中的最后一个父亲节点就是(数组长度-1 阅读全文
摘要:
快速排序类似于冒泡排序,冒泡排序是在一次排序中找出最大或者最小的数,然后将它冒出,快速排序是依次排序找出基准数的位置(或者说确定所有数的性质,大于基准数或者小于基准数),一般取数组第一个元素为基准数 过程是先确定一个基准数,然后经过一次排序,将所有大于基准的数放到基准数右边,所有小于基准数的都放大基 阅读全文
摘要:
将整数转化为二进制数,要除2取余,余1这一位就是1,整除这一位就是0,存在两种特殊情况,就是输入的数是1或者0,因为<2所以没法做整除判断,所以要在程序开头做个判断,如果输入的是0,直接返回1的个数为0,因为整除法得到1的个数要比正常的少一个,所以最终要给1的个数+1,所以输入的数是1也可以算到这种 阅读全文
摘要:
#include <iostream> #include <vector> using namespace std; //STL vector的几种清空容器(删除)办法 void test() { vector<int> vecnum; vecnum.push_back(1); vecnum.pus 阅读全文
摘要:
在定义轮廓点集的时候定义成了Point2f,虽然opencv中点的数据类型是Point2f,但是findContours函数接受的点类型之能是Point类型 所以将 改为 即可 阅读全文
摘要:
学习到opencv特征检测部分,有的特征检测api不在opencv基础库中,需要额外下载,再对opencv进行编译,下面记录一下opencv的编译过程,使用的opencv版本是4.12 首先上opencv官网上下载对应版本的source压缩包 https://opencv.org/releases/ 阅读全文
摘要:
煤矸石分类项目,提取的煤矸石灰度均值和灰度方差作为特征进行分类,SVM的简单代码如下,使用的二次封装的opencv库,在其他机器上运行将头文件和条件编译宏替换成opencv自己的就可以了 #include "sv.h" #ifdef _DEBUG #pragma comment(lib,"BoxCV 阅读全文
摘要:
SURF(Speeded Up Robust Features)特征关键特性 特征匹配,特征识别等方面有很好的效果,具有四个特征 --特征检测 --尺度空间(尺度不变性) --选择不变性(光照不变性,旋转不变性) --特征向量(匹配用) 特征检测整个流程可以用DDM来概括,第一个D是detector 阅读全文
摘要:
理论与现实总是不一致的,实际情况下几乎所有角点都不是一个准确的像素点,因为图像的边缘不是之间有黑到白,而往往存在一个灰度的过度。(100,5)实际上 (100.234,5.789),而我们在跟踪、三维重建,相机校正等应用上又都需要精确的像素位置。有以下几种解决方法 1.插值法 通过周围四个点的变化情 阅读全文
摘要:
自定义角点检测器是基于Harris和Shi-Tomasi角点检测的 首先通过计算矩阵M来得出λ1λ2两个特征值,然后根据他们得到角点响应值 然后自己设置阈值实现实现计算出阈值得到有效响应值的角点位置 API cv::cornerEigenValsAndVecs ( InputArray src, O 阅读全文