
OpenCV/C++
文章平均质量分 83
熟悉OpenCV/C++的API,为生产环境的算法快速运行而准备,
SongpingWang
计算机视觉相关--程序语言相关
展开
-
OpenCV + CPP 系列(圩八)人脸识别经典算法(实时检测识别)
文章目录制作数据集训练并人脸识别本文以 OpenCV + CPP 系列(圩七)人脸识别经典算法 为基础,实现简单的人脸识别系统。若需要实现商业可行的算法,使用深度学习的人脸检测技术,人脸特征提取与存储技术,海量特征向量检索技术。实现流程:视频(摄像头)获取图像人脸检测技术截取目标区域使用PCA特征训练模型使用摄像头获取人脸进行预测识别头文件 FaceRecognize.h:#pragma once#include <opencv2/opencv.hpp>#include原创 2021-09-24 10:26:16 · 432 阅读 · 0 评论 -
OpenCV + CPP 系列(圩七)人脸识别经典算法
文章目录一、简介二、测试FisherFace 和 EigenFace 特征LBPHFace 特征一、简介主要使用OpenCV自带的经典人脸特征进行识别:Fisherface(LDA)特征Eigenface(PCA)特征这两个特征预处理时,图像大小必须一致LBPHface(LBPH)特征该特征优点是不会受到光照、缩放、旋转和平移的影响。三个特征使用的创建方法:static Ptr<FisherFaceRecognizer> create (int num_comp原创 2021-09-24 10:24:46 · 742 阅读 · 0 评论 -
OpenCV + CPP 系列(圩六)数据降维 PCA
文章目录一、简述一、简述在机器学习中,我们需要对数据进行特征提取,然后使用提取的数据特征进行训练,实现分类,回归等操作来对未知数据进行预测。为了提升模型的准确率和减少推理的计算量,所以我们需要对提取的特征进行评估,是否有重复特征或者白噪声,而这些特征往往是人下意思无法发现的,高维度数据会使得有效数据密度降低,使分类器的分类效果变差,从而需要更多的数据集。关于数据降维的详情:https://blog.youkuaiyun.com/wsp_1138886114/article/details/80691543关于P原创 2021-09-21 11:10:59 · 431 阅读 · 0 评论 -
OpenCV + CPP 系列(圩五)标准差,协方差与 特征值、特征向量
文章目录一、标准差,协方差二、特征值、特征向量演示一、标准差,协方差矩阵数据处理理论:协方差矩阵查看:https://blog.youkuaiyun.com/wsp_1138886114/article/details/81005881协方差散度查看:https://blog.youkuaiyun.com/wsp_1138886114/article/details/80967843计算协方差示例图:二、特征值、特征向量有矩阵 AAA ,其特征值与特征向量定义:Ax=λxA \mathbf{x} = \lambda原创 2021-09-18 09:34:09 · 730 阅读 · 0 评论 -
OpenCV + CPP 系列(圩四)视频分析(拓展跟踪算法)
文章目录一、KCF效果展示多目标跟踪二、其它方法BOOSTINGMedianFlowTLD一、KCFKCF全称为Kernel Correlation Filter 核相关滤波算法。是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista提出来的,该算法不论是在跟踪效果还是跟踪速度上都有十分亮眼的表现,论文下载地址相关滤波算法算是判别式跟踪。但是不能很好地处理遮挡问题。主要是使用给出的样本去训练一个判别分类器,判断跟原创 2021-09-10 16:38:37 · 310 阅读 · 0 评论 -
生成独立运行opencv开发的exe程序
如何生成能在没有安装opencv库及vs2015环境的电脑上运行的exe文件项目基本算法已经完成,甲方需要一个可以运行的demo。目前,程序能在自己的电脑上正常运行。移植到其他win7/win10系统上,运行失败。寻找各种解决办法,baidu找到两个办法:1.使用静态链接的方法,这种生成的exe太大,放弃。2.将对应需要的dll拷贝到exe的执行目录下,这种虽然文件多,但是易操作,选择。我的环境windows7 + Visual Studio 2015 + opencv3.4.0,各种基本的配置省转载 2021-09-10 10:19:19 · 2213 阅读 · 2 评论 -
OpenCV + CPP 系列(圩三)视频分析(CAMshift)
文章目录一、MeanShift算法介绍算法原理meanShift算法总结二、CAMShift跟踪介绍效果展示一、MeanShift算法介绍关于原理:https://www.cnblogs.com/jimchen1218/p/11940340.htmlMeanshift算法是Fukunaga于1975年提出的,其基本思想是利用概率密度的梯度爬升来寻找局部最优。到了1995年,YizongCheng针对离x越近的采样点对x周围的统计特性越有效,定义了一族核函数,并根据所有样本点的重要性不同,设定了一个权重原创 2021-09-10 09:18:03 · 283 阅读 · 0 评论 -
OpenCV + CPP 系列(圩二)视频分析(光流对象跟踪)
文章目录一、稀疏光流-KLT二、稠密光流-HFOpenCV—python目标跟踪(光流) 或者 光流及视频特征点追踪关于光流理论:https://cloud.tencent.com/developer/article/1367394一、稀疏光流-KLT在视频移动对象跟踪中,稀疏光流跟踪是一种经典的对象跟踪算法,可以绘制运动对象的跟踪轨迹与运行方向,是一种简单、实时高效的跟踪算法,这个算法最早是有Bruce D. Lucas and Takeo Kanade两位作者提出来的,所以又被称为KLT。KL原创 2021-09-09 11:17:50 · 368 阅读 · 0 评论 -
OpenCV + CPP 系列(圩一)视频分析(BSM,inRange)
文章目录一、背景消除建模(BSM)与对象跟踪效果展示二、基于颜色目标跟踪使用Opencv处理视频跟踪对象时,借助视频原先的背景与当前的获取帧进行比较,有效地区分开视频中的背景和前景。这种方法我们称为背景减除(Background Subtraction)。OpenCV—python 视频分析背景提取与前景提取 理论介绍。一、背景消除建模(BSM)与对象跟踪实现原理:BS算法图像分割(GMM – 高斯混合模型) BackgroundSubtractorMOG2机器学习(KNN –K个最近邻)原创 2021-09-09 09:46:49 · 354 阅读 · 0 评论 -
OpenCV + CPP 系列(五十)背景替换与视频绿幕抠图
一、证件照背景替换实现流程:指定背景色获取背景的色块形成蒙板蒙板边缘羽化形成新颜色背景头文件 machine_learning_all.h:#pragma once#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;using namespace std;class Machine_learning{public: void void replace_bg_demo原创 2021-09-08 10:13:08 · 708 阅读 · 0 评论 -
OpenCV + CPP 系列(卌九) 聚类与图像分割(GMM- 混合高斯模型)
文章目录GMM 简介GMM 聚类数据演示GMM 图像分割示例GMM 简介关于高斯混合模型理论:https://zhuanlan.zhihu.com/p/30483076关于高斯混合模型理论:https://wangsp.blog.youkuaiyun.com/article/details/81009717高斯混合模型 (GMM) 为关于数据的高斯分布与观测数据在总体分布中密度概率 的数据分析模型。当样本数据 XXX 是一维数据(Univariate)时,高斯分布遵从下方概率密度函数(Probabilit原创 2021-09-08 10:05:39 · 753 阅读 · 0 评论 -
OpenCV + CPP 系列(卌八)聚类与图像分割( KMeans)
文章目录KMeans- 聚类算法简介KMeans- 聚类算法简介无监督学习方法分类问题,输入分类数目,初始化中心位置硬分类方法,以距离度量迭代分类为聚类常见的聚类方法有:划分式聚类方法(Partition-based Methods)、基于密度的聚类方法(Density-based methods DBSCAN)、层次化聚类方法(Hierarchical Methods) 等。关于更多理论请查看:https://blog.youkuaiyun.com/wsp_1138886114/article/d原创 2021-09-08 08:54:08 · 1855 阅读 · 0 评论 -
OpenCV + CPP 系列(卌七)级联分类器训练
文章目录一、级联分类器训练简介一、级联分类器训练简介使用 Haar、LBP 特征训练级联分类器关于 级联分类器(使用) 以及详情查看。关于 OpenCV—Python CascadeClassifier(级联分类器) 点击查看。操作步骤:收集样本数据 – 包括正负样本数据规范化 – 大小、格式生成vec文件与负样本列表文本文件使用OpenCV自动的级联分类器训练工具,训练样本数据得到最终的级联分类器数据(XML格式)(1)以人脸检测为例 –公开的数据库有正向样本数目负样本数目原创 2021-09-08 08:53:21 · 653 阅读 · 0 评论 -
OpenCV + CPP 系列(卌六)目标检测与计数
提取表格原创 2021-08-24 17:31:23 · 2102 阅读 · 1 评论 -
OpenCV + CPP 系列(卌五)图像旋转、切边、直线检测
方法:通过边缘检测 + 轮廓发现或者直线检测最大外接矩形实现通过二值分割 + 形态学方法 + Hough直线 找到最大外接矩形通过二值分割 + 形态学方法 + 直线拟合,求交点获取轮廓,仿射变换。...原创 2021-08-24 17:30:53 · 795 阅读 · 0 评论 -
OpenCV + CPP 系列(卌四)级联分类器(使用)
级联分类器目录若同我是编译的opencv则在:D:\opencv_build\install\etc\haarcascades目录下否是下载安装的opencv则在:D:\opencv4\opencv\build\etc\haarcascades目录下haarcascade_eye.xmlhaarcascade_eye_tree_eyeglasses.xmlhaarcascade_frontalcatface.xmlhaarcascade_frontalcatface_extended.xmlh原创 2021-08-21 19:51:40 · 2820 阅读 · 0 评论 -
OpenCV + CPP 系列(卌三)图像特征提取(Brisk)
文章目录一、Brisk(Binary Robust Invariant Scalable Keypoints)特征介绍效果演示一、Brisk(Binary Robust Invariant Scalable Keypoints)特征介绍头文件 image_feature_all.h:声明类与公共函数#pragma once#include <opencv2/opencv.hpp>#include <iostream>#include <opencv2/xfeatur原创 2021-08-21 19:50:57 · 600 阅读 · 0 评论 -
OpenCV + CPP 系列(卌二)图像特征匹配( KAZE/AKAZE)
文章目录一、KAZE简介二、代码演示特征检测效果对比演示匹配一、KAZE简介ECCV2012中出现了一种比SIFT更稳定的特征检测算法KAZE ([1])。KAZE的取名是为了纪念尺度空间分析的开创者—日本学者Iijima。KAZE是日语‘风’的谐音,寓意是就像风的形成是空气在空间中非线性的流动过程一样,KAZE特征检测是在图像域中进行非线性扩散处理的过程。关于KAZE算法详情讲解:https://blog.youkuaiyun.com/chenyusiyuan/article/details/8715129传原创 2021-08-21 19:50:21 · 1688 阅读 · 0 评论 -
OpenCV + CPP 系列(卌一)图像特征匹配( FLANN 匹配)
FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。关于算法详情查看:https://blog.youkuaiyun.com/Bluenapa/article/details/88371512https://www.jianshu.com/p/d70d9c8b2bec...原创 2021-08-18 19:59:53 · 1745 阅读 · 0 评论 -
OpenCV + CPP 系列(四十)图像特征匹配( BFMatcher 暴力匹配)
文章目录BFMatcher演示SURF--BFMatchBFMatcherBrute Force匹配是opencv二维特征点匹配常见的办法,BFMatcher总是尝试所有可能的匹配,从而使得它总能够找到最佳匹配,这也是Brute Force(暴力法)的原始含义。实现原理发现两幅图片分别提取出来N,M个特征向量然后对N和M的特征向量进行匹配,找到最佳匹配然后再画出匹配的特征显示出来void match(InputArray queryDescriptors, 特征描述子1(待查询)原创 2021-08-18 19:58:29 · 7516 阅读 · 0 评论 -
OpenCV + CPP 系列(卅九)图像特征提取(Haar特征)
文章目录Haar特征介绍(Haar Like Features)Haar特征介绍(Haar Like Features)Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征。用黑白两种矩形框组合成特征模板,在特征模板内用 黑色矩形像素和 减去 白色矩形像素和来表示这个模版的特征值。高类间变异性低类内变异性局部强度差不同尺度计算效率高Viola提出的haar特征:最原始的Haar-like特征在2002年的《A general fr原创 2021-08-17 21:33:49 · 745 阅读 · 0 评论 -
OpenCV + CPP 系列(卅八)图像积分图
文章目录一、积分图简介二、代码演示一、积分图简介第一个提出 Haar 特征快速计算方法的是 CVPR2001上 的那篇经典论文 《Rapid object detection using a boosted cascade of simple features》, Viola 提出了一种利用积分图(integral image)快速计算 Haar 特征的方法, 这个方法使得图像的局部矩形求和 运算的复杂度从 O(MN) 下降到了 O(4) 。Haar 特征的计算需要重复计算目标区域的像素值,使用积分图原创 2021-08-17 21:37:19 · 426 阅读 · 0 评论 -
OpenCV + CPP 系列(卅七)图像特征提取(LBP特征检测)
文章目录一、LBP 简介原始的LBP算子LBP的改进版本:MB-LBP特征LBPH,图像的LBP特征向量二、LBP 演示一、LBP 简介LBP(Local Binary Pattern,局部二值模式) 是一种用来描述图像局部纹理特征的算子;具有 旋转不变性 和 灰度不变性 等显著的优点。用于提取图像的局部的纹理特征。关于算法详情,写的非常好:查看 https://blog.youkuaiyun.com/lk3030/article/details/84034963或者 https://blog.csdn.n原创 2021-08-17 21:36:04 · 1743 阅读 · 0 评论 -
OpenCV + CPP 系列(卅六)图像特征提取(HOG特征检测)
SURF(Speeded Up Robust Features)特征关键特性:特征检测尺度空间选择不变性特征向量构建Hessian矩阵,生成所有的兴趣点,用于特征的提取;构建尺度空间,在不同的尺度空间发现关键点,非最大信号压制特征点定位特征点主方向分配,旋转不变性要求生成特征点描述子特征点匹配,特征向量...原创 2021-08-17 21:35:35 · 577 阅读 · 0 评论 -
OpenCV + CPP 系列(卅五)图像特征提取(SURF特征检测、SIFT特征检测)
文章目录一、SURF(Speeded Up Robust Features)特征关键特性二、SIFT特征检测一、SURF(Speeded Up Robust Features)特征关键特性-特征检测-尺度空间-选择不变性-特征向量工作原理选择图像中POI(Points of Interest) Hessian Matrix在不同的尺度空间发现关键点,非最大信号压制发现特征点方法、旋转不变性要求生成特征向量二、SIFT特征检测SIFT(Scale-Invariant Feature原创 2021-08-17 09:08:52 · 1408 阅读 · 0 评论 -
OpenCV + CPP 系列(卅四)图像特征提取(亚像素级别角点检测)
文章目录亚像素级别角点检测演示像素坐标检测亚像素级别角点检测亚像素:在生成数字图像处理时(拍照等)我们是将物理世界中连续的图像进行了离散化处理。现实世界中颜色为连续的且有无数种类,成像到像素面上每一个像素点只代表其附近的颜色,我们常使用的3通道图像颜色种类(255*255*255)代表,至于“附近”到什么程度?就很困难解释。两个像素之间有5.2微米的距离,在宏观上可以看作是连在一起的。但是在微观上,它们之间还有无限的更小的东西存在。这个更小的东西我们称它为“亚像素”。实际上“亚像素”应该是存在的,只是硬原创 2021-08-15 20:16:38 · 1234 阅读 · 0 评论 -
OpenCV + CPP 系列(卅三)图像特征提取(Harris角点检测、Shi-Tomasi角点检测、自定义角点检测)
常用图像特征描述:SIFTSURFHOGHaarLBPKAZEAKAZEBRISK图像特征描述子用于:DetectionDescriptionMatchingHarris角点检测Shi-Tomasi角点检测maxCorners 表示返回角点的数目,如果检测出来角点数目大于最大数目则返回响应值最强前规定数目。-qualityLevel表示最小可接受的向量值1500, 0.01,15-minDistance两个角点之间的最小距离(欧几里得距离)-blockSi原创 2021-08-14 10:14:20 · 1133 阅读 · 0 评论 -
OpenCV + CPP 系列(卅二)opencv-contrib 扩展模块编译(win10+vs2019+opencv4.5.2)
文章目录一、前期准备工作二、开始Cmake编译三、VS2019编译OpenCV源代码整个流程:cmake配置与生成 -> VS编译生成与installer -> 重新配置opencv/include/libraries/附加依赖项一、前期准备工作opencv github首页地址:https://github.com/opencv/默认安装了visual studio 2019 – window10 X64下载Opencv4.5.2 点击下载;下载opencv4.5.2扩展模块(o原创 2021-08-10 09:04:39 · 2734 阅读 · 1 评论 -
OpenCV + CPP 系列(卅一)离散傅立叶变换
文章目录一、简介二、函数介绍三、演示一、简介关于傅里叶变换【点击查看】, 讲的通俗易懂。关于傅里叶变换讲解 【点击查看】。对一张图像使用傅立叶变换就是将它分解成正弦和余弦两部分。也就是将图像从空间域(spatial domain)转换到频域(frequency domain)。这一转换的理论基础来自于以下事实:任一函数都可以表示成无数个正弦和余弦函数的和的形式。傅立叶变换就是一个用来将函数分解的工具。 2维图像的傅立叶变换可以用以下数学公式表达:F(k,l)=∑i=0N−1∑j=0N−1f(i,原创 2021-08-09 15:49:40 · 671 阅读 · 0 评论 -
OpenCV + CPP 系列(三十)基于距离变换与分水岭的图像分割
一、图像分割图像分割概述 【详情请点击】图像分割(Image Segmentation)是图像处理最重要的处理手段之一图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KMeans二、距离变换与分水岭OpenCV—Python 分水岭算法图像分割距离变换常见算法有两种不断膨胀/ 腐蚀得到基于倒角距离分水岭变换常见的算法基于浸泡理论实现步骤将原创 2021-08-06 12:23:54 · 684 阅读 · 0 评论 -
OpenCV + CPP 系列(廿九)点与多边形的关系
文章目录一、简介二、效果演示一、简介比较常见的判断点与多边形关系的算法有射线法、面积法、点线判断法和弧长法等,算法复杂度都为O(n),不过只有射线法可以正确用于凹多边形,其他3个只可以用于凸多边形。点在多边形内的七种方法: 点击查看改进射线法: 点击查看判断点与多边形关系的算法: 点击查看测试一个点是否在给定的多边形内部,边缘或者外部pointPolygonTest(InputArray contour, 输入的轮廓Point2f pt, 测试点bool me原创 2021-08-06 12:22:56 · 437 阅读 · 0 评论 -
OpenCV + CPP 系列(廿八)图像矩(Image Moments)
文章目录一、简介Hu矩moments 计算生成数据二、演示一、简介图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述符)来描述整个图像,这组数据越简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、图像编码与重构等。从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量的关于该图像不同类型的几何特性信息,比如大小原创 2021-08-05 10:21:57 · 461 阅读 · 0 评论 -
OpenCV + CPP 系列(廿七)轮廓(拟合)包围框(矩形框、圆形框)
aa原创 2021-08-05 10:00:08 · 2163 阅读 · 0 评论 -
OpenCV + CPP 系列(廿六)轮廓 (contour) 与 凸包 (convex Hull)
文章目录一、轮廓(find contour)findContours发现轮廓drawContours绘制轮廓二、凸包(Convex Hull)函数 convexHull,approxPolyDP,boundingRect,minEnclosingCircle拟合函数 fitEllipse、minAreaRect一、轮廓(find contour)轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果findContours发现轮廓在二值图像上发现轮廓使用原创 2021-08-05 09:55:25 · 1478 阅读 · 0 评论 -
OpenCV + CPP 系列(廿五)模板匹配(Template Match)
函数签名:void matchTemplate(InputArray image, 源图像,必须是8-bit或者32-bit浮点数图像InputArray templ, 模板图像,类型与输入图像一致OutputArray result, 输出结果,必须是单通道32位浮点数,假设源图像WxH,模板图像wxh, 则结果必须为W-w+1, H-h+1的大小。int method, 匹配方法InputArray mask = noArray() 掩码);头原创 2021-07-23 17:22:10 · 465 阅读 · 0 评论 -
OpenCV + CPP 系列(廿四)图像的翻转(镜像),平移,旋转,仿射,透视变换
官网教程文章目录一、翻转(镜像)二、平移三、旋转获取变换矩阵仿射变换函数 warpAffine四、仿射变换一、翻转(镜像)头文件 quick_opencv.h:声明类与公共函数#pragma once#include <opencv2\opencv.hpp>using namespace cv;class QuickDemo {public: ... void flip_Demo(Mat& image); void rotate_Demo(Mat& ima原创 2021-07-13 14:54:53 · 1945 阅读 · 2 评论 -
OpenCV + CPP 系列(廿三)像素重映射 与 图像扭曲(MLS)
像素重映射Remap(InputArray src, 输入图像OutputArray dst, 输出图像InputArray map1, x 映射表 CV_32FC1/CV_32FC2InputArray map2, y 映射表int interpolation, 选择的插值方法,常见线性插值,可选择立方等int borderMode, BORDER_CONSTANTconst Scalar borderValue c原创 2021-07-20 09:18:45 · 1631 阅读 · 2 评论 -
OpenCV + CPP 系列(廿二)霍夫变换(直线、圆)
文章目录一、霍夫变换-直线效果演示二、霍夫圆检测一、霍夫变换-直线Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间(x,y)到极坐标空间转换;x=ρcosθ,y=ρsinθ,R2=(ρcosθ)2+(ρsinθ)2x=ρ\cosθ,y=ρ\sinθ,R^2=(ρ\cosθ)^2+(ρ\sinθ)^2x=ρcosθ,y=ρsinθ,R2=(ρcosθ)2+(ρsinθ)2对极坐标进行变换,转化为θ与R的关系 R2=R2cos2θ+R2原创 2021-07-19 11:20:22 · 578 阅读 · 0 评论 -
OpenCV + CPP 系列(廿一)图像卷积二 (sobel、laplance、canny)边缘提取
测试更多的算子:卷积核——Roberts、Prewitt、Sobel、Lapacian、DoG、LoG算子原创 2021-07-18 10:30:56 · 602 阅读 · 0 评论 -
OpenCV + CPP 系列(二十)图像卷积一(均值、中值、高斯、双边滤波)与 边缘处理
文章目录一、图像滤波均值滤波高斯滤波双边滤波关于更多滤波详情:OpenCV—Python 图像滤波(均值、中值、高斯、高斯双边、高通等滤波)一、图像滤波头文件 quick_opencv.h:声明类与公共函数#pragma once#include <opencv2\opencv.hpp>using namespace cv;class QuickDemo {public: ... void blur_Demo(Mat& image); void gaussian_原创 2021-07-14 10:25:10 · 670 阅读 · 0 评论