
OpenCV
文章平均质量分 78
阿卡蒂奥
这个作者很懒,什么都没留下…
展开
-
局部差异二进制 LDB - Local Difference Binary
LDB简介局部差异二进制 LDB(Local Difference Binary)是一种高效,健壮且独特的二进制描述符。 LDB的独特性和稳健性通过3个步骤实现: 第一,LDB通过一组二进制测试捕获每个图像块的内部模式,每个二进制测试比较图像块内图像网格的平均强度IavgIavg Iavg和一阶梯度dxdx dx 和dydy dy(图a和图b)。 第二,LDB采用多网格策略来捕获不同空间...原创 2018-07-31 17:20:06 · 3547 阅读 · 5 评论 -
opencv3/C++ 机器学习-SVM应用实例:药品(胶囊)识别与分类
问题描述:现对6种不同颜色药品(胶囊)分别进行图像采集,并进行类别标注(0-5)。如图所示(文末附有图像源文件链接): 现使用胶囊的RGB通道的均值作为特征,利用SVM建立分类器模型并进行训练,然后利用训练好的模型,在多个样本混合的图像中将各类样本标记出位置并识别出其所属类别。 具体详细处理过程见代码及注释。示例代码:#include #include#include原创 2018-02-07 11:58:37 · 4826 阅读 · 3 评论 -
opencv3/C++ 机器学习-神经网络ANN_MLP识别数字
神经网络ANN_MLP识别数字 环境:win7+VS2012+OpenCV3 利用OpenCV3中的ANN_MLP神经网络,使用如图所示图片进行训练,实现简单的数字识别功能。 训练测试代码:#include #include #include #include #include using namespace cv;using namespace ml;int原创 2018-02-02 10:57:13 · 9223 阅读 · 16 评论 -
opencv3/C++ 机器学习-神经网络ANN_MLP
ANN_MLP简介OpenCV中的ML模块实现了前馈人工神经网络,具体地说是多层感知器(MLP),是最常用的神经网络类型。 MLP由输入层,输出层和一个或多个隐藏层组成。 MLP的每一层包括一个或多个与来自上一层和下一层的神经元定向连接的神经元。 如图所示,一个具有三个输入,两个输出的三层感知器,隐藏层包括五个神经元: MLP中的所有神经元都是相似的。它们中的每一个都有几个输入链接(它将原创 2018-01-31 19:46:59 · 5419 阅读 · 0 评论 -
opencv3/C++ 机器学习-逻辑回归/Logistic Regression
逻辑回归/Logistic Regression逻辑回归是一种与支持向量机(SVM)密切相关的二分类算法。与支持向量机一样,逻辑回归可以扩展为多类分类问题。OpenCV中逻辑回归支持二元和多类分类(创建了多个2类分类)。训练逻辑回归分类器可使用批量梯度下降法或小批量梯度下降法。 在OpenCV中逻辑回归通过cv::ml::LogisticRegression类实现。在逻辑回归中,我们通过优...原创 2018-02-28 15:06:39 · 1688 阅读 · 2 评论 -
opencv3/C++ FAST特征检测
FAST( Features from Accelerated Segment Test)FAST特征检测的特点是简单、快速、有效。作者为了在实时帧速率情况下进行高速特征检测,提出FAST特征检测。 相比SIFT、DoG、Harris、SUSAN等比较耗时的特征检测方法,FAST只利用周围的像素进行比较,速度大大加快。FAST提出大多数特征检测算法通过在图像上计算角点响应函数(C原创 2018-01-29 22:08:42 · 7872 阅读 · 4 评论 -
opencv3/C++ 机器学习-支持向量机SVM & 单分类器 : ONE_CLASS
支持向量机(SVM)最开始用于二分类情况。 后来SVM被扩展到回归和聚类问题。 SVM基于内核方法,使用核函数将特征向量映射到高维空间,并在该空间中建立最佳的线性判别函数或适合于训练数据的最优超平面。 在SVM中内核没有明确定义,但需要定义超空间中任意两点之间的距离。 分离超平面和来自两个类别(二分类情况下)的最近特征向量之间的距离最大时,该解是最优的。 离超平面最近的特征向量被称为支持向量,即...原创 2018-02-05 13:34:37 · 2957 阅读 · 3 评论 -
opencv3/C++ Harris角点、Shi-Tomasi角点&亚像素角点
角点检测在图像匹配、目标识别、目标跟踪、运动估计与三维重建等CV领域起着非常重要的作用。角点定义关于角点的定义有以下几种: 1、角点是两条及两条以上的边缘的交点; 2、角点处的一阶导数最大,二阶导数为零; 3、角点是一阶导数(即灰度梯度)的局部最大对应的像素点; 4、角点指示了物体边缘变化不连续的方向; 5、角点指图像梯度值和梯度方向的变化速率都很高的点;Harris原创 2017-12-25 15:11:09 · 3489 阅读 · 0 评论 -
opencv3/C++ 描述符匹配
BFMatcher类暴力匹配BFMatcher类: 对于第一个集合中的每个描述符,这个匹配器通过尝试每个描述符找到第二个集合中最接近的描述符。class CV_EXPORTS_W BFMatcher : public DescriptorMatcher{public://暴力匹配器构造函数 CV_WRAP BFMatcher( int normType=NORM原创 2018-01-19 21:37:45 · 1791 阅读 · 0 评论 -
opencv3/C++ 积分图像
计算源图像一个或多个积分图像,如下所示: sum(X,Y)=∑xX,yYimage(x,y)\ \texttt{sum} (X,Y) = \sum _{x sqsum(X,Y)=∑xX,yYimage(x,y)2\ \texttt{sqsum} (X,Y) = \sum _{x tilted(X,Y)=∑yY,abs(x−X+1)≤Y−y−1image(x,y)\ \te原创 2018-01-19 19:04:17 · 1120 阅读 · 0 评论 -
opencv3/C++ 机器学习-最邻近算法KNN识别字符
如图,有如下字母表; 现尝试采用最邻近算法KNN,取前10列字符作为训练数据,然后识别字母表中的字符。创建训练数据首先通过获取前10列字符的轮廓外接矩形,将字符裁剪出作为训练样本建立图库。#include <string>#include <iostream>#include <opencv2\opencv.hpp>#includ...原创 2018-02-03 21:03:20 · 2928 阅读 · 8 评论 -
opencv3/C++ 机器学习-随机森林/Random Trees
随机森林简介随机森林由许多决策树组成:通过随机抽取训练样本构建每棵决策树,从特征属性中随机抽取的特征属性中选取最佳分裂属性。 随机森林/Random Forests的一般方法最早由Ho于1995年提出。Leo Breiman在Random Forests中提出随机森林概念,随后与Adele Cutler系统研究和发展了这一理论并注册了商标(包括RF、 RandomForests,、Rando...原创 2018-03-01 21:45:06 · 9626 阅读 · 4 评论 -
opencv3/C++ 机器学习-提升算法/Boosting
提升算法/Boosting提升算法/Boosting是一种提高弱分类器准确度的方法。通常在分类问题中,boosting通过改变训练样本的权重,学习多个分类器,并将这些分类器线性组合,提高分类性能。 Kearns 和 Valiant分别在1988和1989年提出了“强可学习”和“弱可学习”的概念。1990年Robert Schapire在论文The Strength of Weak Lear...原创 2018-03-02 19:04:31 · 2032 阅读 · 0 评论 -
opencv3/C++ 机器学习-决策树/DTrees
决策树/Decision Tree决策树/Decision Tree是一棵二叉树(每棵非叶子节点有两个子节点的树)。可用于分类或回归问题。对于分类问题(形成分类树),每个叶节点都标有一个类标签;多个叶节点可能具有相同的标签。对于回归问题(形成回归树),每个叶结点分配一个常量,所以回归函数是分段常量。决策树从根结点递归构造。所有训练数据(特征向量和响应)用于分割根节点。在每个节点中,根据一些标准找到最原创 2018-03-03 20:55:12 · 3164 阅读 · 1 评论 -
opencv3/Python 稠密光流calcOpticalFlowFarneback
def calcOpticalFlowFarneback(prev, next, flow, pyr_scale, levels, winsize, iterations, poly_n, poly_sigma, flags): 使用Gunnar Farneback算法计算密集光流。prev 8位单通道输入图像;next 与prev大小和类型相同的输入图像;flow 计算的流量图像具有...原创 2018-07-01 16:09:13 · 11211 阅读 · 9 评论 -
opencv3/C++ 使用Tracker进行简单目标跟踪
MIL算法以在线方式训练分类器以将对象与背景分离。从实际情况看来,算法对过程中有遮挡的情况跟踪能力较差.相关API: static Ptr&amp;amp;amp;amp;lt;TrackerMIL&amp;amp;amp;amp;gt; create(const TrackerMIL::Params &amp;amp;amp;amp;amp;parameters); CV_WRAP static Ptr&amp;amp;amp;原创 2018-06-13 15:21:48 · 21570 阅读 · 15 评论 -
opencv3/C++ 将图片转换为视频
现有一些图片按顺序放置在一文件夹jogging1\下,如图: 需要将其合并转换为一个视频。示例:环境:Win7+OpenCV3+VS2012#include<opencv2/opencv.hpp>#include <stdio.h>#include <io.h>#include <string>#include <i...原创 2018-05-26 19:38:14 · 10494 阅读 · 0 评论 -
opencv3/python 鼠标响应操作
鼠标回调函数:def setMouseCallback(windowName, #窗口名称onMouse, #鼠标响应处理函数param=None) #处理函数的IDevent鼠标事件:event:EVENT_LBUTTONDBLCLK = 7 左键双击EVENT_LBUTTONDOWN = 1 ...原创 2018-05-14 22:14:12 · 6944 阅读 · 2 评论 -
opencv3/c++ Haar特征与Viola-Joines人脸检测
在人脸检测中,Viola-Jones人脸检测算法是一个经典的算法,由Viola.P.和 Jones.M在2001年的CVPR上提出。主要通过利用Haar特征结合adaboost算法进行训练,然后建立级连分类器分类。优点是速度快,正脸检测高效;缺点是对侧脸检测不够稳健。Haar特征由Viola和Jones根据Haar小波的方法开发(由Rainer Lienhart改进为Haar-like特征...原创 2018-03-27 13:59:42 · 2371 阅读 · 2 评论 -
opencv3/C++ HOG特征提取
HOG特征HOG(Histograms of Oriented Gradients)梯度方向直方图 通过利用梯度信息能反映图像目标的边缘信息并通过局部梯度的大小将图像局部的外观和形状特征化.在论文Histograms of Oriented Gradients for Human Detection中被提出.HOG特征的提取过程为: Gamma归一化;计算梯度;划分cell组...原创 2018-03-26 09:28:16 · 9929 阅读 · 1 评论 -
opencv3/C++ PHash算法图像检索
PHash算法即感知哈希算法/Perceptual Hash algorithm,计算基于低频的均值哈希.对每张图像生成一个指纹字符串,通过对该字符串比较可以判断图像间的相似度.PHash算法原理将图像转为灰度图,然后将图片大小调整为32*32像素并通过DCT变换,取左上角的8*8像素区域。然后计算这64个像素的灰度值的均值。将每个像素的灰度值与均值对比,大于均值记为1,小于均值记为0,得...原创 2018-04-01 17:23:12 · 5298 阅读 · 1 评论 -
opencv3/C++ 离散余弦变换DCT
离散余弦变换/Discrete cosine transform,根据离散傅里叶变换的性质,实偶函数的傅里叶变换只含实的余弦项,而数字图像都是实数矩阵,因此构造了一种实数域的变换——离散余弦变换(DCT)。 离散余弦变换具有很强的”能量集中”特性,左上方称为低频数据,右下方称为高频数据。而大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分。因此也可以在图像压缩算法中用来...原创 2018-04-01 15:58:12 · 12342 阅读 · 0 评论 -
opencv:Assertion failed (type == CV_32FC1 || type == CV_64FC1) in cv::dct
使用opencv中的dct()函数进行离散余弦变换时出现如下错误:OpenCV Error: Assertion failed (type == CV_32FC1 || type == CV_64FC1) in cv::dct, file .......原问题处: Mat src = imread("son.jpg", 0); if(src.empty()) ...原创 2018-03-31 21:31:18 · 16524 阅读 · 0 评论 -
opencv3/C++ 机器学习-EM算法/Expectation Maximization
EM算法/Expectation MaximizationEM算法包含两步:E,求期望(Expectation),利用概率模型参数的现有估计值,计算隐藏变量的期望;M,求极大(Maximization),利用E 步上求得的隐藏变量的期望,对参数模型进行最大似然估计。所得参数估计值用于下个E步的计算,重复至收敛。期望最大化/EM算法以具有一定数量混合物的高斯混合分布的形式估计多变量概率密度函...原创 2018-03-05 09:52:39 · 2770 阅读 · 0 评论 -
opencv3/C++/Python 检测分类器使用(HAAR/LBP):人脸与眼睛的检测、猫脸检测
利用OpenCV自带的xml文件,实时检测摄像头中人脸与眼睛。detectMultiScale()参数说明://在输入图像中检测不同大小的对象。检测到的对象作为矩形列表返回。void detectMultiScale( InputArray image,//CV_8U类型图像CV_OUT std::vector& objects,//包含检测到的对象的矩形double scal原创 2018-01-09 22:05:44 · 7100 阅读 · 3 评论 -
opencv3/C++ 平面对象识别&透视变换
findHomography( )函数findHomography( )找到两个平面之间的透视变换H。 参数说明:Mat findHomography( InputArray srcPoints, //原始平面中点的坐标InputArray dstPoints, //目标平面中点的坐标int method = 0, //用于计算单应性矩阵的方法double ransacRepro原创 2018-01-26 20:28:47 · 3225 阅读 · 1 评论 -
opencv3/C++ 级联分类器训练样本数据
需要准备的数据具体的创建过程及程序见: ① opencv3/C++ 从视频中获取人脸数据 ② C++ 遍历文件夹中的图片 ③ C++读写txt与dat文件 以下是准备好的样本数据。1、训练数据:训练数据包含两部分:包含人脸图片的样本数据和背景图片数据,如图所示; 其中,negitive文件夹下存放的是背景图片数据img和文件bg.txt: 如图,文件夹img下存原创 2018-01-10 19:17:39 · 3325 阅读 · 0 评论 -
opencv3/C++ 从视频中获取人脸数据
在利用opencv_traincascaded训练样本数据中需要人脸图片作为正样本数据,人脸图片可以通过下载公开数据集或自己采集获得。此处通过提取视频中的人脸来获得需要的人脸图片。#include//#includeusing namespace cv;int main() { CascadeClassifier faceCascader, eyeCascader;原创 2018-01-12 15:39:36 · 3264 阅读 · 2 评论 -
opencv3/C++光流点追踪
#include<opencv2/opencv.hpp>using namespace cv;//光流跟踪Mat frame, gray, pr_frame, pr_gray;std::vector<Point2f> inPoints;std::vector<Point2f> fpts[2];void trackFeature();int main(){ VideoCapture原创 2017-12-25 16:18:25 · 5649 阅读 · 11 评论 -
opencv3/C++基于颜色的目标跟踪
void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);src:输入图像; lowerb:下边界数组,阈值下限; upperb:上边界数组,阈值上限; dst:输出图像;颜色范围如图: 捕获摄像头中的黄色方块,示例:#include<opencv2/opencv.hpp>usin原创 2017-12-23 17:12:18 · 11034 阅读 · 21 评论 -
opencv3/C++轮廓的提取与筛选
轮廓提取findContours发现轮廓findContours(InputOutputArray binImg, //输入8bit图像,0值像素值不变,非0的像素看成1;(变为二值图像) OutputArrayOfArrays contours,//输出找到的轮廓对象OutputArray, hierachy// 图像的拓扑结构int mode, //轮廓返回的模式(RETR_TRE原创 2017-12-19 17:44:50 · 33075 阅读 · 2 评论 -
opencv3/C++绘制几何图形
在图像上绘制几何图形#include<iostream>#include<opencv2/opencv.hpp>using namespace cv;Mat src1, dst;void drawRectangle();void drawLine();void drawEllipse();void drawCircle();void tsxt();void randomLine();原创 2017-12-18 21:38:56 · 3944 阅读 · 1 评论 -
opencv3/C++图像滤波实现
图像滤波在opencv中可以有多种实现形式自定义滤波如使用3×3的掩模: 对图像进行处理.使用函数filter2D()实现#include<iostream>#include<opencv2/opencv.hpp>using namespace cv;int main(){ //函数调用filter2D功能 Mat src,dst; src = imread("E原创 2017-12-18 21:21:10 · 4859 阅读 · 0 评论 -
opencv3/C++图像像素操作
RGB图像转灰度图RGB图像转换为灰度图时通常使用: Gray=R×0.299+G×0.587+B×0.114\ Gray = R×0.299 + G×0.587 + B×0.114 进行转换,以下尝试通过其他对图像像素操作的方式将RGB图像转换为灰度图像。#include<iostream>#include<opencv2/opencv.hpp>#include<math.h>us原创 2017-12-18 20:07:35 · 11539 阅读 · 3 评论 -
opencv3/C++视频读取、视频写入
视频读取视频读取,主要利用VideoCapture类下的方法打开视频并获取视频中的帧,具体示例如下:#include<iostream>#include<opencv2/opencv.hpp>using namespace cv;int main(){ VideoCapture capture; Mat frame; frame= capture.open("E:/im原创 2017-12-21 16:23:33 · 32388 阅读 · 11 评论 -
opencv3/C++霍夫圆/直线检测
霍夫直线检测参数说明:cv::HoughLinesP(InputArray src, // 输入图像(8位灰度图像)OutputArray lines, // 输出直线两点坐标(vector<Vec4i>)double rho, // 生成极坐标时候的像素扫描步长double theta, //生成极坐标时候的角度步长(一般取CV_PI/180)int threshold, // 累加器阈原创 2017-12-19 14:18:46 · 6208 阅读 · 0 评论 -
opencv3/C++视频中叠加透明图片
大致思路:获取摄像头画面后,通过在图像上循环叠加一组背景透明的PNG图片,在图像上产生类似GIF的动图效果。#include<opencv2/opencv.hpp>using namespace cv;//PNG透明图片叠加到视频int main(){ Mat frame; VideoCapture capture; capture.open(0); if(!c原创 2018-01-02 21:53:48 · 4012 阅读 · 2 评论 -
opencv3/C++视频背景去除建模(BSM)
视频背景建模高斯混合模型(Mixture Of Gauss,MOG)createBackgroundSubtractorMOG2(int history=500, double varThreshold=16,bool detectShadows=true);K最近邻(k-NearestNeighbor,kNN)createBackgroundSubtractorKNN(int history=50原创 2017-12-23 13:31:27 · 2222 阅读 · 0 评论 -
opencv3/C++基于移动对象的轮廓的跟踪
使用opencv提供的背景去除算法(KNN或高斯混合模型GMM)去除背景,然后将获取的目标二值化后通过筛选目标轮廓获得目标位置。#includeusing namespace cv;//基于移动对象的轮廓的跟踪int main(){ Mat frame; bool flag = true; VideoCapture capture; capture.op原创 2018-01-04 09:53:20 · 2393 阅读 · 1 评论 -
opencv3/C++ 机器学习-正态贝叶斯分类器
正态贝叶斯分类模型假设每个类的特征向量是正态分布的(但不一定是独立分布的)。所以,假设整个数据分布函数是一个高斯混合函数,每个类为一个分量。使用训练数据,该算法估计每个类的均值向量和协方差矩阵,然后将其用于预测。用于正态分布数据的贝叶斯分类器NormalBayesClassifier类继承基类StatModel,在NormalBayesClassifier类中增加了两个方法:1、估计输...原创 2018-01-27 15:15:50 · 1209 阅读 · 0 评论