C/C++
文章平均质量分 81
eternity1118_
不积跬步无以至千里,不积小流无以成江海
展开
-
常量与指针
一、指向常量的指针int a = 10;const int b = 20;int *pi = &a;//指向非常量的指针const int *pci = &b;//或者int const *pci; 此时pci被定义为指向整数常量,我们不同修改指针指向的值,但可以修改指针的值,比如: pci = &a;是正确的,这里pci被修改了,指向一个非常量的值,原创 2016-04-11 22:53:14 · 1017 阅读 · 0 评论 -
滚动数组
滚动数组的作用在于优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。一个简单的例子:斐波那契数列:一般代码:[cpp] view plain copy转载 2016-07-27 18:02:09 · 359 阅读 · 0 评论 -
字符串循环左移和右移
问题:假设给定一个字符串S,想要把其前k个字符左移放到字符串的尾部,比如S:beautiful,移动的结果字符串为:utifulbea;这种移动方式就叫做字符串的循环左移,且左移k位。问题分析:假如字符串S包含n个字符,那么明显有,循环左移k位等价于循环左移k+n位,而且循环左移和循环右移其实是一样的,如左移k位就等价于左移n-k位。一般的,遇到这一问题,大多数人会首先想到一位一位原创 2016-07-06 16:29:10 · 3385 阅读 · 2 评论 -
限制对比度的自适应直方图均衡化(CLAHE)在opencv中的使用
1.CLAHE简介 HE直方图增强,大家都不陌生,是一种比较古老的对比度增强算法,它有两种变体:AHE和CLAHE;两者都是自适应的增强算法,功能差不多,但是前者有一个很大的缺陷,就是有时候会过度方法图像中相同区域的噪声问,为了解决这一问题,出现了HE的另一种改进算法,就是CLAHE;CLAHE是另外一种直方图均衡算法,能有效的增强或改善图像(局部)对比度,从而获取更多图像相关细节原创 2016-05-24 13:50:01 · 14726 阅读 · 0 评论 -
自适应直方图均衡(AHE)和限制对比度的自适应直方图均衡(CLAHE)
本文翻译自https://en.wikipedia.org/wiki/Adaptive_histogram_equalization,如有错误还望海涵。。自适应的直方图均衡(Adaptive Histogram Equalization)1.算法简介 AHE是一种用来改善图像对比度的图像处理技术,它与传统的(普通)直方图均衡相比,不同点主要在于,AHE通过计算图像每一个显翻译 2016-05-24 17:37:02 · 22430 阅读 · 4 评论 -
new type() 与 new type[]
int *p = new int(10);//分配一个整数,赋值为10int *pp = new int[10];//分配一个数组,数组大小为10当然上面第二条语句也可以写成如下形式:int *pp = new int[10](5);//都赋值为5另外注意:new了以后一定要释放,因为new与delete是成对出现的;delete p;delete[] pp;原创 2016-07-28 17:20:46 · 726 阅读 · 0 评论 -
循环不变式
如果某个命题初始为真,并且每次更改后仍然保持该命题为真,则若干次更改后该命题仍然为真;原创 2016-08-04 12:14:28 · 671 阅读 · 0 评论 -
Manacher算法--求最长回文子串
回文和回文子串回文串:顺着读和倒着读都一样的字符串;回文子串:给定字符串string,若str同时满足以下两个条件:1)str是string的子串;2)str是回文串;那么str就是string的回文子串;引出问题要求求出上面string中最长的那个回文子串;解决方案方案一:枚举中心位置,对奇数位串和偶数位串分开处理;int AllAlgorithms::longest原创 2016-08-01 11:39:15 · 962 阅读 · 0 评论 -
int a[]与a--和a++
int a[] = {3,5,1,2,-3,7,4,8};a ++;//or ++ aresult:a[] = {5,1,2,-3,7,4,8,1};分析:相当于数组首地址加1,从第二个元素开始索引,剩余元素补1;int a[] = {3,5,1,2,-3,7,4,8};a --;//或 -- aresult:a[] = {0,3,5,1,2,-3,7,4};分析:首地址原创 2016-08-02 15:15:41 · 923 阅读 · 0 评论 -
基于DL的计算机视觉(2)--实现图像分类最简单的方法:KNN
1. 图像分类问题这是人每天自然而然会做的事情,普通到大部分时候,我们都感知不到我们在完成一个个这样的任务。早晨起床洗漱,你要看看洗漱台一堆东西中哪个是杯子,哪个是你的牙刷;转载 2016-08-11 11:21:05 · 2741 阅读 · 0 评论 -
OpenCV+Tesseract进行OCR学习(一)文字提取
使用Tesseract进行OCR学习(一)文字提取使用Tesseract进行OCR学习一文字提取OCR简介文字提取codeOCR简介熟悉OCR的人都了解,OCR大致分为两个部分:-文字提取text extractor -文字识别text recognition其中,第一部分是属于图像处理部分,涉及到图像分割的知识,而第二部分则大多数利用谷歌的Tesseract来进行字符的识别,设计到的东西不多原创 2016-09-18 16:14:22 · 25052 阅读 · 24 评论 -
OpenCV+Tesseract进行OCR学习(二)文字识别
OpenCV的Tesseract使用OpenCV的Tesseract使用Mac端的Tesseract使用iOS端的Tesseract使用Mac端的Tesseract使用Tesseract的安装 Mac上的Tesseract安装很方便,直接利用brew来安装:brew updatebrew install tesseract或者下载源码进行编译安装: Github地址Tesseract的使用原创 2016-09-18 16:57:27 · 14245 阅读 · 0 评论 -
C++之typename的起源和用法
侯捷在Effective C++的中文版译序中提到:C++的难学,还在于它提供了四种不同(但相辅相成)的程序设计思维模式:procedural-based, object-based, object-oriented, generics 对于较少使用最后一种泛型编程的我来说,程序设计基本上停留在前三种思维模式当中。虽说不得窥见高深又现代的泛型技术,但前三种思维模式已几乎满足我所遇到的所有需求,因此转载 2016-09-21 14:43:26 · 653 阅读 · 0 评论 -
图片序列与视频之间的转换
视频转成图片序列图片序列转成视频调用测试视频的读取图片序列的读取视频转成图片序列//将视频转化问AVI格式 int VideoToImage(char* videoName, char* outDir, char* imgExt, int maxFrameCount) { VideoCapture cap(videoName); if (!ca原创 2017-04-27 14:03:03 · 1836 阅读 · 0 评论 -
手把手教你Dlib+VS2013+Win7配置(详细)
下载文件Dlib下载官网 http://dlib.net/ 只push了最新版本;且最新版本要求vs2015github https://github.com/davisking/dlib 在分支里可以找到各种版本其它 http://dlib.net/files/ 这里有很多版本,还有人脸数据,以及模型文件等cmake下载版本数:需要2.8原创 2018-01-17 16:42:04 · 1705 阅读 · 1 评论 -
算法面试题(二)-- 最长公共子序列(LCS)与苦恼的月下老人
这是一个典型的动态规划题,属于求两个序列的最长公共子序列问题,如果你手边有《算法导论》这本书,这个问题就可以在书中找到;Code:int LCS(const char *Male,const char *Female) { int N = (int)strlen(Male); int M = (int)strlen(Female);原创 2016-06-22 14:21:45 · 1198 阅读 · 2 评论 -
堆栈
基本特征:后进先出(LIFO)基本操作:压入(push),弹出(pop)实现要点:初始化内存空间,栈顶指针,判空判满缺点:容易造成空间浪费,且易受初始化空间的局限举例:基于数组的堆栈//堆栈typedef struct ZHLStack{ int *array; size_t cap;//容量 size_t top;//栈顶 }ZHLST原创 2016-07-21 17:34:34 · 521 阅读 · 0 评论 -
图像匹配之感知哈希(pHash)算法的OpenCV实现
1.前言 目前“以图搜图”的引擎越来越多,可参考博文: http://blog.csdn.net/forthcriminson/article/details/8698175 此篇博文中列出了很多“以图搜图”的引擎,之前很好奇他们是如何进行检索的,偶然间看到了一篇博客,上面说Google和Tineye主要利用的算法是感知哈转载 2016-04-07 18:01:27 · 16467 阅读 · 2 评论 -
霍夫Hough峰值检测的C++实现
直接上代码,代码里分析峰值检测的基本思想:void ls::houghPeaks(cv::Mat &H,int numpeaks,double thresh,const int *nhood_size,vector &r,vector &c) { bool done = false;//峰值检测布尔值 cv::Mat hnew = H.clone();/原创 2016-05-24 12:20:43 · 4990 阅读 · 1 评论 -
混合高斯模型GMM
1.简介 GMM(Gaussian Mixture-based Model)作为一种常见的而聚类算法,可以被用来分离场景中前景和背景的,或者叫做背景扣除,那么什么叫做背景扣除(Background Subtraction)呢?我们知道所谓的监控系统中,通常都是利用静态相机来捕捉场景的,因此其中比较具有挑战的一步就是如何检测出场景中的突然闯入者,传统的应用中都会假设场景中没有这样的原创 2016-05-04 16:15:30 · 9375 阅读 · 0 评论 -
Mac下安装Opencv并配置Xcode
step1:下载OpenCVstep2:打开终端,进到opencv源码主目录下;step3:键入以下命令 1.sudo cmake -G "Unix Makefiles" 2.sudo make (可加上-j8或-j4选项,加快编译速度) 3.sudo make install (可加上-j8或-j4选项,加快编译速度)原创 2016-04-20 18:07:22 · 1833 阅读 · 0 评论 -
运动跟踪之均值漂移(MeanShift)算法和Camshift算法(连续自适应的MeanShift)
直方图引入直方图是一个简单的表,它给出了一幅图像或一组图像中拥有给定数值的像素数量。因此,灰度图像的直方图有256个条目(或称为容器)。0号容器给出值为0的像素数目,1号容器给出值为1的像素个数,以此类推。直方图反投影直方图是图像内容的一个重要特性。如果一幅图像的区域中显示的是一种独特的纹理或是一个独特的物体,那么这个区域的直方图可以看做一个概率函数,它给出的是某个像素属于该纹理或物体转载 2016-05-16 17:28:51 · 5360 阅读 · 0 评论 -
运动跟踪之CMT算法
CMT(Clustering of Static-Adaptive Correspondences for Deformable Object Tracking),是一套比较新的跟踪算法,诞生于2014年,原名叫Consensus-based Tracking and Matching of Keypoints for Object Tracking ,当时在计算机视觉应用(Applicati原创 2016-05-14 21:29:17 · 16164 阅读 · 34 评论 -
OC学习笔记(五)--对象与函数
#import @interface Person : NSObject { float weight; int age; } - (void) talk; @end @implementation Person - (void) talk { NSLog(@"对方(年龄%d体重%f原创 2016-05-30 18:00:24 · 633 阅读 · 0 评论 -
OpenCV之特征检测器(Feature Detector),描述子提取器(Descriptor Extractor)和描述子匹配器(Descriptor Matcher)
1.特征检测子 -Harriscv::cornerHarris(image,strength,3,3,0.01); -Fastcv::Ptr fast = cv::FastFeatureDetector::create();//或cv::FAST(InputArray image, std::vector &keypoints, int threshold)原创 2016-05-09 15:28:20 · 11801 阅读 · 0 评论 -
字符串匹配之KMP算法
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容转载 2016-06-07 16:23:49 · 678 阅读 · 0 评论 -
C++ 提取图像ROI保存到Mat
只要给定待提取ROI的四个角点坐标,利用OpenCV的透视变换计算出变换矩阵,就可以实现提取并保存到Mat;void ls::getROI(cv::Mat &src, float vertices[8],cv::Mat &dst) { float w2 = sqrt(pow(vertices[0] - vertices[2], 2) + pow(vertices[1]原创 2016-06-29 11:10:26 · 2223 阅读 · 0 评论 -
引用和指针
引用1.引用即别名int a = 20;int& b = a; // int* b = &a;b = 10; // *b = 10;cout 2.引用必须初始化int a;int* p;a = 20;p = &a;int& b; // ERROR !int& b = a; // OK3.引用一旦初始化就不能再引用其它变量int a = 20, c = 30;i原创 2016-07-10 12:04:33 · 439 阅读 · 0 评论 -
卡尔曼(Kalman)滤波(五)-- 三次样条插值
1均差2三次样条插值函数3M关系式参考数值分析;原创 2016-06-19 16:37:14 · 3038 阅读 · 0 评论 -
卡尔曼(Kalman)滤波(六)--卡尔曼滤波的应用: 四元数卡尔曼滤波(QKF)的C代码实现姿态解算
0 引言在捷联惯导工程实践[6]中,我们希望陀螺仪能够非常精确的获取信息,或者说希望陀螺仪能非常准确的地反映观测量(加速度,磁场等)[6,7]的真实值,但是这个过程或多或少是受到噪声干扰的,导致测量的不准确;为了能够让陀螺仪在状态更新时做到准确,必须对状态变量和观测量进行数据融合和滤波,从而尽最大限度的降低噪声的干扰。最常用也最有效的方法非卡尔曼滤波莫属,其在处理高斯模型的系统上效果颇原创 2016-06-19 17:08:40 · 20194 阅读 · 6 评论 -
队列
基本特征:先进先出(FIFO)基本操作:压入,弹出实现要点:初始化空间,前指针front弹出后指针rear压入,循环使用,判空判满举例1:基于数组的队列//队列typedef struct Queue{ int *array; size_t cap; size_t front; size_t rear; size_t size;} M原创 2016-07-23 11:20:17 · 350 阅读 · 0 评论 -
利用OpenCV计算图像二维熵
直接上代码:void calc_2D_entropy(cv::Mat &input, cv::Mat &output){ int height = input.rows; int width = input.cols; cv::Mat out = cv::Mat::zeros(height, width, CV_32FC1); //tem...原创 2018-03-23 15:17:38 · 3980 阅读 · 5 评论