![](https://img-blog.csdnimg.cn/2019110520132227.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenCV
Micheal超
努力!奋斗!
展开
-
创 OpenCV - 视频分析与对象跟踪实战(03. 对象检测与跟踪(基于颜色))
对象检测与跟踪(基于颜色)利用颜色范围过滤(基于颜色跟踪实现步骤)inRange过滤形态学操作提取轮廓查找外接矩形获取位置标定标注与测量代码演示#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;// 绘制感兴趣区域...原创 2019-11-16 23:59:25 · 178 阅读 · 1 评论 -
OpenCV - 视频分析与对象跟踪实战(02. 背景消除建模(BSM))
背景消除建模(BSM)在背景不怎么变化是视频中使用利用前几帧的图像作为背景模型,后续的帧图像与背景模型比较,得到差异就是前景对象基本原理Background Subtraction基本原理(BS算法)图像分割(GMM –高斯混合模型)机器学习(KNN –K个最近邻)相关APIBackgroundSubtractorBackgroundSubtractorMOG2...原创 2019-11-16 23:09:48 · 119 阅读 · 1 评论 -
OpenCV - 视频分析与对象跟踪实战(01. 视频读写)
视频读写视频格式与相关API介绍格式支持avi(推荐使用avi文件读写)mp4VideoCapturereadisOpened:release:释放资源>> 操作符重载:读取到每一帧从视频文件中读写视频FPS : 每秒的帧数(15帧-20帧就很好了)从摄像头中读写视频VideoWriter -代码演示www.fourcc.org...原创 2019-11-16 22:27:43 · 94 阅读 · 1 评论 -
Eclipse+OpenCV3.1.0 的环境搭建
步骤首先下载OpenCV2.4.9,下载的时候,选择windows版的。然后安装 (英文原版程序可以在这里找到,注意修改版本号和文件路径)其实安装的过程就是解压的过程,并没有什么安装向导之类的,安装完成后,我们最关心的是这个目录:opencv\build\java 如下图所示建立项目 JavaOpenCV310参考博客:1.https://blog.csdn....原创 2019-01-22 20:02:33 · 336 阅读 · 0 评论 -
OpenCV-图像处理(22、像素重映射(cv::remap))
像素重映射(cv::remap)简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。API介绍cv::remapRemap(InputArray src,// 输入图像OutputArray dst,// 输出图像InputArray map1,// x 映射表 元素值的数据类型需要是CV_32FC1/CV_32FC2Input...原创 2019-01-16 19:51:06 · 3508 阅读 · 0 评论 -
OpenCV-图像处理(33、基于距离变换与分水岭的图像分割)
什么是图像分割(Image Segmentation)图像分割(Image Segmentation)是图像处理最重要的处理手段之一图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KMeans从数学角度来看,图像分割是将数字图像划分成互不相...原创 2019-01-22 00:30:13 · 1007 阅读 · 3 评论 -
OpenCV-图像处理(32、点多边形测试)
概念介绍 - 点多边形测试测试一个点是否在给定的多边形内部,边缘或者外部API介绍 cv::pointPolygonTestdouble pointPolygonTest( //返回数据是类型InputArray contour,// 输入的轮廓Point2f pt, // 测试点bool measureDist // 是否返回距离值,如果是false,1表示在内面,0表示...原创 2019-01-21 23:20:17 · 825 阅读 · 0 评论 -
OpenCV-图像处理(21、霍夫圆变换)
霍夫圆检测原理对直线来说, 一条直线能由参数极径极角 (r,θr,θr,θ) 表示.而对圆来说, 从平面坐标到极坐标转换需要三个参数, 也就是: ( xxxcenter , yyycenter, rrr )。其中 xxxcenter , yyycenter 表示圆心,rrr 表示圆的半径。在这三维中,一维是x,一维是y,另外一维是圆的半径r。这就意味着需要大量的内存而且执行效率会很低,速...原创 2019-01-16 13:27:49 · 1297 阅读 · 0 评论 -
OpenCV-图像处理(31、图像矩(Image Moments))
矩的概念介绍可以参考:https://blog.csdn.net/keith_bb/article/details/70197104几何矩( 其中P(i,j)为图像在坐标点(i,j)处的灰度值。)中心距中心归一化距其中:图像中心Center(x0, y0)。 此非图像坐标的中心点,而是图像 质 的中心,质点API介绍与使用 – cv::moments 计算生成数据API介...原创 2019-01-21 22:21:54 · 3086 阅读 · 0 评论 -
OpenCV-特征提取与检测(04、亚像素级别角点检测)
亚像素面阵摄像机的成像面以像素为最小单位。例如某CMOS摄像芯片,其像素间距为5.2微米。摄像机拍摄时,将物理世界中连续的图像进行了离散化处理。到成像面上每一个像素点只代表其附近的颜色。至于“附近”到什么程度?就很困难解释。两个像素之间有5.2微米的距离,在宏观上可以看作是连在一起的。但是在微观上,它们之间还有无限的更小的东西存在。这个更小的东西我们称它为“亚像素”。实际上“亚像素”应该是存在...原创 2019-01-26 20:42:55 · 2670 阅读 · 1 评论 -
OpenCV-图像处理(20、霍夫变换-直线)
霍夫直线变换介绍Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间到极坐标空间转换霍夫线变换的原理众所周知, 一条直线在图像二维空间可由两个变量表示. 如:<1>在笛卡尔坐标系: 可由参数: 斜率和截距(m,b)表示。<2>在极坐标系: 可由参数: 极径和极角(r, θ)表示。可以用极坐标系来表示直线....原创 2019-01-15 23:39:20 · 2204 阅读 · 0 评论 -
OpenCV-图像处理(30、轮廓周围绘制矩形框和圆形框)
API基于RDP算法实现,目的是减少多边形轮廓点数approxPolyDP( //减少多边形轮廓点数InputArray curve, //一般是由图像的轮廓点组成的点集 Mat(vector)OutputArray approxCurve, //表示输出的多边形点集double epsilon, //主要表示输出的精度,就是两个轮廓点之间最大距离数,5,6,7,,8,,,,...原创 2019-01-21 16:15:34 · 2147 阅读 · 1 评论 -
OpenCV-图像处理(15、自定义线性滤波)
卷积概念卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)卷积的作用:模糊图像,提取边缘,进行图像的锐化卷积如何工作把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:常见算子Robert算子...原创 2019-01-10 11:34:49 · 413 阅读 · 0 评论 -
OpenCV-图像处理(23、直方图均衡化)
图像直方图图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。直方图均衡化:是一种提高图像对比度的方法,拉伸图像灰度值范围。让图像更均衡。对于图像的特征提取是非常有用的通过remap我们知道可以将图像灰度分布从一个分布映射到另外一个分布,然后在得到映射后的像素...原创 2019-01-16 20:29:06 · 515 阅读 · 0 评论 -
OpenCV-图像处理(24、直方图计算)
直方图概念上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直方图的概念真正意义,不过是基于图像像素灰度直方图是最常见的。直方图最常见的几个属性:dims:要收集数据的参数数量。 在我们的示例中,dims = 1,因为我们只计算每个像素的强度值(在灰度图像中)。bin:它是每个暗淡的细分数量。 在我们的示例中,bin = ...原创 2019-01-16 21:12:31 · 744 阅读 · 0 评论 -
Python - OpenCV库的安装
安装以管理员的方式打开“Anaconda Prompt”输入下载命令“pip install opencv-python”如果指明要下某版本的OpenCV,可以加上版本号。如:“pip install opencv-python==3.4.1.15”除此以外,最好再下载一个库,“pip install opencv-contrib-python==3.4.1.15”检测是否安装成...原创 2019-07-22 19:57:17 · 1488 阅读 · 0 评论 -
OpenCV-Android平台应用实战 - 银行卡卡号识别(07、二值化与字符分割)
思路二值化方法选择指定阈值自动阈值( OTSU 和 Triangle )轮廓发现轮廓提取干扰区域过滤粘连字符分割解决字符粘连问题—粘连字符分割程序代码运行截图...原创 2019-04-03 15:03:29 · 462 阅读 · 2 评论 -
OpenCV-Android平台应用实战 - 银行卡卡号识别(06、卡号区域发现与截取)
卡号区域发现与截取卡号区域定位RGB与HSV色彩空间:色彩空间转换,通过 cvtColor() 实现。inRange过滤比例与定位计算区域截取程序代码完善算法部分 (TextImageProcessor.java):package com.example.bankcardrec.ocr.algo;import android.net.Uri;import an...原创 2019-04-02 22:37:34 · 346 阅读 · 1 评论 -
OpenCV-Android平台应用实战 - 银行卡卡号识别(05、寻找与发现银行卡区域)
思路建议:为了更好的发现梯度之间的差异,尽量在 RGB色彩空间寻找梯度。然后对RGB空间寻找到的梯度,可以取RGB三个通道中最大值的梯度差,作为那一个像素点的梯度。同时,也可以直接用求取出来的梯度图像进行灰度化,再进行梯度二值化。(简而言之:先在RGB空间求梯度,然后灰度化,然后二值化)对比:为什么不先转灰度,在求梯度呢?理由:先求梯度,可以最大限度的保留各个通道值间的差异。更能反映出图像本...原创 2019-04-02 21:38:03 · 490 阅读 · 1 评论 -
OpenCV-特征提取与检测(04、SURF特征检测)
SURF ( Speed Up Robust Features,加速稳健特征 ) 是SIFT改进版也是加速版,提高了检测特征点的速度,综合性能要优于SIFT。与SIFT 的比较Sift算法的优点是特征稳定,对旋转、尺度变换、亮度保持不变性,对视角变换、噪声也有一定程度的稳定性;缺点是实时性不高,并且对于边缘光滑目标的特征点提取能力较弱。Surf(Speeded Up Robust F...原创 2019-01-28 23:26:28 · 120 阅读 · 1 评论 -
OpenCV-图像处理- Java(读取与显示图片)
在C++显示图片,OpenCV为其提供了一个叫做HighGUI的接口,尚且没有在java中实现。OpenCV支持有限的图片格式,具体可参阅官方文档(常用的支持bmp、jpeg、png、tiff),可以使用Imgcodecs类的imread方法来读取图片(注意测试时,路径不要包括中文):结构目录(Eclipse中):创建两个类:OpenCVTest 和 ImageViewer步骤创...原创 2019-01-22 19:10:21 · 6404 阅读 · 0 评论 -
OpenCV-图像处理(14、基本阈值操作)
图像阈值(threshold)简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)二进制分割OpenCV提供函数 cv :: threshold 来执行阈值操作。src_gray:我们的输入图片dst:目标(输出)图像threshold_value:进行阈值操作的阈值max_BINARY_value:二进制阈值操...原创 2019-01-10 11:04:19 · 764 阅读 · 0 评论 -
OpenCV-图像处理(19、Canny边缘检测)
Canny算法介绍Canny是边缘检测算法,在1986年提出的。是一个很好的边缘检测器很常用也很实用的图像处理方法Canny算法介绍 - 非最大信号抑制Canny算法介绍-高低阈值输出二值图像T1, T2为阈值,凡是高于T2的都保留,凡是小于T1都丢弃,从高于T2的像素出发,凡是大于T1而且相互连接的,都保留。最终得到一个输出二值图像。也就是说:如果像素梯度高于上阈值,...原创 2019-07-02 22:41:16 · 383 阅读 · 0 评论 -
OpenCV-图像处理(18、Laplance算子)
Laplance算子二阶导数我不会,别担心 ->拉普拉斯算子(Laplance operator)Opencv已经提供了相关API - cv::LaplanceAPI使用cv::LaplacianLaplacian(InputArray src,OutputArray dst,int depth, //深度CV_16Sint kisze, // 3double sc...原创 2019-01-15 18:40:41 · 529 阅读 · 0 评论 -
OpenCV-图像处理(10、膨胀与腐蚀)
形态学操作(morphology operators)-膨胀与腐蚀(Dilation与Erosion)。图像形态学操作图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领...原创 2019-01-09 20:22:10 · 14711 阅读 · 5 评论 -
OpenCV-图像处理(09、模糊图像二)
模糊是基本的图像处理方法。在介绍这两种方法之前先来介绍两种常见的噪声:椒盐噪声椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声分为两种即胡椒噪声和盐噪声,胡椒噪声是黑色的,属于低灰度噪声,盐噪声是白色的,属于高灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点。去除椒盐噪声最常用的算法是中值滤波。高斯噪声高斯噪声是一种随机噪声,其幅度的统计规律服从...原创 2019-01-05 23:58:46 · 425 阅读 · 0 评论 -
OpenCV-图像处理(08、模糊图像一)
模糊原理Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就为了给图像预处理时候减低噪声使用Smooth/Blur操作其背后是数学的卷积计算其中:f()表示一副图像,i、j表示图像的行和列,h(k,l)表示卷积算子(和)(也可以叫掩膜),k l又可以叫窗口大小(掩膜的大小,比如3*3),g()表示输出的像素值;通常这些卷积算子计算都是线性操作,所以又叫线性...原创 2019-01-05 22:39:29 · 825 阅读 · 0 评论 -
OpenCV-图像处理(07、绘制形状与文字)
使用cv::Point与cv::Scalarcv::Point:Point :用于表示二维坐标系下的点,如:Point p = Point(2,3)、Point2f p =Point2f(42.4, 24.4)、Point3i p = Point3i(2,3,4)。 Point p;p.x = 10;p.y = 8;or p = Pont(10,8);cv::Scalar:S...原创 2019-01-05 15:34:09 · 24652 阅读 · 5 评论 -
OpenCV-图像处理(06、调整图像亮度与对比度)
理论图像变换可以看作如下:像素变换 – 点操作邻域操作 – 区域调整图像亮度和对比度属于像素变换-点操作g(i,j)=αf(i,j)+βg(i,j) = αf(i,j) + βg(i,j)=αf(i,j)+β (其中 α&gt;0,β是增益变量)重要的APIMat new_image = Mat::zeros( image.size(), image.type() ); ...原创 2019-01-05 13:30:06 · 26059 阅读 · 2 评论 -
OpenCV-图像处理(05、图像混合)
理论-线性混合操作(图像混合有 ·加·减·乘·除·比重 等方式)addWeighted:1.1 比重公式: g(x)=(1−α)fg(x) = (1-α)fg(x)=(1−α)f0(x)+αf(x) + αf(x)+αf1(x)(x)(x) ,其中 α 的取值范围为0~1之间,f0(x)表示一张图像x位置像素点的颜色数据,f1(x)表示另一张图像x位置像素点的颜色数据1.2 输出...原创 2019-01-04 23:54:22 · 1430 阅读 · 0 评论 -
OpenCV-图像处理(04、图像操作)
读写图像imread 可以指定加载为灰度或者RGB图像Imwrite 保存图像文件,类型由扩展名决定读写像素读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at(y, x); 或者 Scalar intensity = img.at(Point(x, y));读一个RGB像素点的像素值Vec3f intensity = img...原创 2019-01-04 22:09:51 · 338 阅读 · 0 评论 -
OpenCV-图像处理(03、Mat对象)
Mat对象与IplImage对象Mat对象 OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分IplImage 是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题Mat对象使用Mat对象构造函数构造函数(部...原创 2019-01-04 16:55:32 · 588 阅读 · 0 评论 -
OpenCV-图像处理(02、矩阵的掩膜操作)
1. 获取图像像素指针CV_Assert(myImage.depth() == CV_8U);Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获得当前行指针const uchar* current= myImage.ptr(row );获取当前像素点P(row, col)的像素值 p(row, col) =current[col]2. 像素范...原创 2019-01-04 00:25:59 · 1334 阅读 · 1 评论 -
OpenCV3.0.0 + VS2012 的环境搭建
说明一下,本人的电脑是Win10系统 64位的具体步骤(参考:https://blog.csdn.net/weixin_38335127/article/details/79138315)第一步:下载和安装 OpenCV 下载:第二步:配置环境变量 第三步:配置工程目录 遇到的问题:解决VC运行opencv后提示缺少opencv_world310d.dll问题法一:编译时选择r...原创 2018-12-24 18:47:01 · 1053 阅读 · 0 评论 -
OpenCV-图像处理(25、直方图比较)
直方图比较方法-概述对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。Opencv提供的比较方法有四种:Correlation 相关性比较 -(计算结果范围为 -1到1 -1很不相关,1完全一样 )Chi-Square 卡方比较 -(计算结果越接近0,两个直方图越相似)Inter...原创 2019-01-17 17:13:40 · 16427 阅读 · 18 评论 -
OpenCV-特征提取与检测(01、Harris角点检测)
早在1988年,Chris Harris &amp;amp; Mike Stephens就在其论文A Combined Corner and Edge Detector中发现了这些角落的一个早期尝试,现在它被称为harris Corner Detector。在具体展开之前,不得不提一下Moravec早在1981就提出来的Moravec角点检测算子。角点的作用:角点是图像的很重要的局部特征,它决定图像...原创 2019-01-24 00:31:48 · 5886 阅读 · 3 评论 -
OpenCV-图像处理(13、图像上采样和降采样)
图像金字塔概念我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。高斯金子塔 – 用来对图像进行降采样拉普拉斯金字塔 – 用来重建一张图片根据它的上层降...原创 2019-01-10 00:24:47 · 5519 阅读 · 0 评论 -
OpenCV-图像处理(12、形态学操作应用-提取水平与垂直线)
原理方法图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值腐蚀,输出的像素值是结构元素覆盖下输入图像的最小像素值1) 二值图...原创 2019-01-09 22:13:13 · 818 阅读 · 0 评论 -
OpenCV-图像处理(11、形态学操作)
开操作- open先腐蚀后膨胀可以去掉小的对象,假设对象是前景色,背景是黑色闭操作- close先膨胀后腐蚀(bin2)可以填充小的洞(fill hole),假设对象是前景色,背景是黑色形态学梯度- Morphological Gradient膨胀减去腐蚀又称为基本梯度(其它还包括-内部梯度、方向梯度)顶帽 – top hat顶帽 是原图像与开操作之间的...原创 2019-01-09 21:07:05 · 514 阅读 · 0 评论 -
OpenCV-图像处理(17、Sobel算子)
卷积应用-图像边缘提取卷积应用-图像边缘提取边缘是什么 – 是像素值发生跃迁的地方,是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用。如何捕捉/提取边缘 – 对图像求它的一阶导数delta = f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘信号越强,我已经忘记啦,不要担心,用Sobel算子就好!卷积操作!Sobel算子...原创 2019-01-15 15:50:48 · 1339 阅读 · 0 评论