
Opencv
文章平均质量分 85
记录学习Opencv的学习笔记,供以后复习使用,也提供给初学者参考。
Rosen.
985 本硕,初创公司创始人,XBOTPARK基金投资企业
展开
-
抠图应用程序设计(二)——磁性套索工具Livewire算法的实现
简介 LiveWire是一种图像分割技术,允许用户使用相对少的鼠标点击次数快速准确地选择感兴趣区域,其实现过程可分为以下两个部分:使用滤波算法过滤并转换成灰度使用Dijkstra算法应用到修改后的图像,从用户分别点击的两个点中找寻出最佳路径 在 LiveWire 算法中, 待分割二维图像被视作有向加权图 G, 像素被视为 G 中的节 点, 连接相邻节点的视为边。由此可以定义代价函数作为边的权值, 即:Cost(p,q)=ωCfc(p)+ωLoG fLoG (p)+ωGf原创 2022-02-08 10:25:09 · 2208 阅读 · 0 评论 -
抠图应用程序设计(一)——GrabCut算法的实现
简介 GrabCut是一种基于Graph Cut的图像分割算法,从待分割的对象周围用户指定的边界框开始,使用高斯混合模型估计目标对象和背景的颜色分布。在像素标签上构造马尔可夫随机场,其能量函数优先选择具有相同标签的连接区域,并不断优化迭代求取最优解,GrabCut的用户操作和效果如下:Graph Cut算法 Graph Cut算法是一种能量优化算法,广泛应用于计算机视觉领域中的前背景分割、立体视觉、抠图技术等。该方法把图像分割问题和图的最小化分割问题关联起来,通过计算对无向图的分割完成图像分割操原创 2022-02-08 10:22:03 · 3873 阅读 · 0 评论 -
单目相机位姿求解之PNP算法原理剖析与实践
对于视觉里程计中,相机位姿的求解问题极为常见。对于双目相机,由于其可以直接计算出深度信息,所以在相机位姿求解上十分容易。但如果我们使用的是单目相机,如何从二维图像中求解出相机相对三维物体的位姿就需要一定的算法来完成。本文章将介绍用于计算单目相机位姿求解的PNP算法原理以及应用。坐标系转换 在介绍PNP算法之前,我们有必要先了解一下四种坐标系之间的转换关系。这四种坐标系分别是世界坐标系——相机坐标系——图像坐标系——像素坐标系。1.世界坐标系到相机坐标系 设某点在世界坐标系的坐标为Pw=(Xw原创 2021-08-27 15:05:31 · 11883 阅读 · 4 评论 -
Opencv学习笔记(十二)基于椭圆模型的人体肤色检测
前言:这里需要首先介绍一下一种颜色空间叫做YCrCb(YUV)空间:YCrCb色彩空间,主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽。其中“Y”表示明亮度,“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“U”和“V” 表示的则是色度。“色度”则定义了颜色的两个方面─色调与饱和度,分别用...原创 2020-02-28 00:03:37 · 3447 阅读 · 0 评论 -
Opencv数字识别(详细思路介绍)
这一次,我们运用学到的Opencv的知识,一起来完成一个简单的数字识别项目,作者本人也是初学者,所以我将以初学者的角度思考要怎么完成这个项目。我将介绍对下图中的数字进行识别的方法:思考问题:1、Q:要怎么对一幅待检测的图像提取出我们要识别的数字呢?A:首先我们可以对图像进行简单的操作转化为二值图像,提取处其中的轮廓后取最小外接矩形,将得到的一个个矩形储存在定义的vector容器当中,等待下一...原创 2020-02-09 14:53:04 · 26321 阅读 · 6 评论 -
Opencv学习笔记(十一)基于CAMshift算法的物体跟踪实现
CAMshift是一种基于对视频序列采用MeanShift算法进行运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值的算法。如此迭代下去,我们便可以对视频中移动的物体进行追踪。MeanShift:...原创 2020-02-07 23:44:48 · 5782 阅读 · 3 评论 -
Opencv学习笔记(十)直方图反向投影calcBackProject()
原理:一般地,我们把图像的灰度图分成若干个等级区间,计算图像像素的灰度值所在各个区间对应的像素值,就能够得到我们的图像直方图。而图像直方图的反向投影矩阵正是根据这些像素值所构成的矩阵。具体可参考:反向投影矩阵计算方法加入我们得到的反向投影矩阵如下:back_Projection=4 4 4 44  ...原创 2020-02-07 17:40:23 · 5089 阅读 · 0 评论 -
Opencv学习笔记(九)背景消除建模(BSM)
在我们使用Opencv进行视频处理跟踪对象时,我们通常可以借助视频原先的背景与当前的获取帧进行比较,通过一定的比较方法和API,我们可以有效地区分开视频中的背景和前景。这种方法我们称为背景减除(Background Subtraction)。我们在比较背景和当前帧时,通常采用两种算法:图像分割(GMM-高斯混合模型)和机器学习(KNN-K邻值算法)高斯混合模型分离算法:将图像分为3-5个高斯...原创 2020-02-06 21:33:34 · 1624 阅读 · 0 评论 -
Opencv学习笔记(八) 提取图像轮廓基础操作
经过两周opencv的学习,对opencv有了一些自己的理解和心得,总结出一套较为实用提取图像轮廓的方法。操作步骤:1、图像锐化。图像锐化的目的是为了要增强图像中对比度,这样可以使提取轮廓的效果,让轮廓显现的更明显。这里我们使用拉普拉斯算子遍历图像,预先定义矩阵:Mat kernel = (Mat_(3, 3) << 1, 1, 1, 1, -8, 1, 1, 1, 1);...原创 2020-02-02 23:54:09 · 2863 阅读 · 0 评论 -
Opencv学习笔记(七) 模板匹配(基于某特征模板识别图像)
什么是模板匹配 ?本文参考链接:Opencv官方文档官方介绍:模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。作者观点:模板匹配其实通过识别已知模板的特征,然后根据此特征对待检测的图像进行遍历地扫描,识别出待检测图像中与模板特征最相似的像素并且定位。(就好比是给你一朵花的照...原创 2020-01-31 21:46:38 · 6939 阅读 · 4 评论 -
Opencv学习笔记(六) 像素重映射
什么是映射?eg:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,b称为元素a在映射f下的象,记作:b=f(a)。a称为b关于映射f的原象。集合A中所有元素的象的集合称为映射f的值域,记作f(A)。像素重映射顾名思义,就是将输入图像中的像素经过新的映射关系,重新排列得到新的图像。用数学...原创 2020-01-30 22:16:39 · 904 阅读 · 0 评论 -
Opencv学习笔记(五) 霍夫直线变换和霍夫圆变换
霍夫变换简介:霍夫变换(Hough Transform)于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,是图像处理领域内从图像中检测几何形状的基本方法之一。经典霍夫变换用来检测图像中的直线,后来霍夫变换经过扩展可以进行任意形状物体的识别,例如圆和椭圆。由于霍夫变换涉及的数学知识较为复杂,如有需要深入理解的,可以参考一下Op...原创 2020-01-29 16:31:34 · 1002 阅读 · 0 评论 -
Opencv学习笔记(四)Sobel算子、Laplance算子和Canny算子的简单应用
简介索贝尔(Sobel)算子索贝尔算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。索贝尔算子不但产生较好的检测效果,而且对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。计算方法:使用函数:Sobel()函数应用:部分代码示例:int main(){ Mat src, gray_src,dest; src...原创 2020-01-28 12:36:57 · 1402 阅读 · 0 评论 -
Opencv学习笔记(三)基本阈值处理操作
1.什么是阈值操作?为了从一副图像中提取出我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并作出相应的判断。(注意:阈值的选取依赖于具体的问题。即:物体在不同的图像中有可能会有不同的灰度值。)2.阈值化的类型:OpenCV中提供了阈值函数:threshold()函数。函数作用:根据函数原型: void threshold...原创 2020-01-27 18:52:21 · 1350 阅读 · 0 评论 -
Opencv学习笔记(二) 提取图像中的水平线和垂直线
提取图像中的水平线和垂直线属于基础的形态学操作的应用,原理:根据要提取图形来定义一个特定的结构元素,然后以这个结构相素去遍历图像,进行一系列形态学操作,以此过滤掉其他特征的图形,达到提取的效果。示例:提取下图中的水平线。解决思路如下:1.将原图转化为灰度图像(cvtColor()函数)。2.运用自适应阈值花操作:adaptiveThreshold函数,根据像素的邻域块的像素值分布来确定该像...原创 2020-01-27 17:09:17 · 4734 阅读 · 0 评论 -
Opencv学习笔记(一) 识别颜色块并且标定轮廓和中心
某男子学院初学小白,刚开始学习opencv一周,直接从做项目和参考代码开始要做的就是识别这张图片中指定颜色的多边形并且标定轮廓和中心思路如下:1.提取颜色根据不同颜色所具有的不同的hsv范围。2.将图片转化成hsv格式,通过hsv范围提取指定颜色图形转化成二值化图像。3.获得的二值化图像难免产生椒盐噪声,这时候我们可以运用循环中值滤波形态学滤波去除 ( 核心函数morpholog...原创 2020-01-17 17:00:27 · 10962 阅读 · 11 评论