OpenCV
文章平均质量分 86
行歌er
因个人原因,暂不维护该博客
展开
-
OpenCV学习笔记(八)——Harris角度特征从原理到实现详解
前言: 在图像中角点是一个重要的局部特征,它决定了图像中关键区域的形状,体现了图像中重要的特征信息,所以在目标识别、图像匹配、图像重构方面角点具有十分重要的意义。 图像中角点的数量远比总像素数小,如果通过角点就能完成一些功能的话,将极大地提高处理效率。 对角点的定义一般分为以下三种:图像边界曲线上具有极大曲率值的点;图像中梯度值和梯度变化率都很高的点;图像边界方向变化不连续的点。 定义...原创 2018-04-16 20:01:53 · 6424 阅读 · 1 评论 -
OpenCV学习笔记(十六)——基于OpenCV内置算法的人脸检测
前言: 人脸检测中最常用的是Haar-Adaboost算法,该算法首先在人脸检测中得到广泛运用,而后也被用于其它有关目标检测中。adaboost 是一套机器学习的框架,根据给出的正样本和副样本训练一个用于识别正样本一类物体的模型。这个模型的本质就是分类器,又叫做级联(cascade)分类器。本文主要是学习使用OpenCV自带的adaboost+haar特征程序,并展示其用于人脸检测的效...原创 2018-04-24 19:00:19 · 13259 阅读 · 3 评论 -
OpenCV学习笔记(十七)——训练自己的OpenCV Haar-Adaboost分类器
前言: OpenCV中有两个函数可以训练分类器opencv_haartraining.exe和opencv_traincascade.exe,前者只能训练haar特征,后者可以用HAAR、LBP和HOG特征训练分类器。这两个函数都可以在opencv的相应文件夹下找到,opencv_haartraining.exe训练的adaboost级联分类器有很多了,本文主要讲opencv_haar...转载 2018-04-24 21:46:33 · 5935 阅读 · 0 评论 -
OpenCV实战(二)——文件扫描件的切边
这是来源于一个真实的案例,扫描仪扫描到的法律文件,需要切除白边,去掉边缘空白,这样看上去才更真实。如果采用人工操作,其成本和时间花费都太高了。我们希望通过一个程序,既准确又高效地完成任务。 其实本案例不需要扩展模块当中的特征提取就可以实现,运用基本的图像处理的知识,我们来尝试。 实现思路:通过边缘检测+轮廓检测或者直线检测最大外接矩形实现。 首先我们拿到一种...原创 2018-04-25 20:06:47 · 6692 阅读 · 5 评论 -
OpenCV学习笔记(十八)——轮廓发现
前言: 当我们通过阈值分割提取到图像中的目标物体后,我们就需要通过边缘检测来提取目标物体的轮廓,使用这两种方法基本能够确定物体的边缘或者前景。接下来,我们通常需要做的是拟合这些边缘的前景,如拟合出包含前景或者边缘像素点的最小外包矩形、圆、凸包等几何形状,为计算它们的面积或者模板匹配等操作打下坚实的基础。一、查找、绘制轮廓 首先了解一下轮廓的定义。一个轮廓代表一系列的点(像素...原创 2018-04-25 22:02:47 · 4695 阅读 · 1 评论 -
OpenCV实战(三)——考试试卷填空题下划线的定位与提取
前言: 大家都知道,现在在英语考试中已普遍实现了机器阅卷,所以从试卷图像中提取答题区域就显的很重要了。为了实现对答题区域的切图和识别,现在我们有一个这样的需求,那就是我们要寻找英语试卷填空题的下划线。这种问题有两种思路:一是对图像进行二值化后直接进行霍夫直线检测;二是对图像进行二值化后经过开运算再进行霍夫直线检测。接下我们编程来演示。一、图像二值化+霍夫直线检测#include...原创 2018-04-26 13:09:37 · 4309 阅读 · 0 评论 -
OpenCV实战(四)——对象(圆)提取
现在我们想从一个杂乱的背景中提取出某个规则图像的轮廓,比方说圆。我们如何才能在一张图像中找的圆的轮廓,同时找到它的圆心坐标以及它的面积和周长呢?我的思路是阈值分割+形态学处理+高宽比过滤。大家也可以尝试下霍夫圆检测的思路。 接下我们编写代码:#include <opencv2/opencv.hpp>#include <iostream>#incl...原创 2018-04-26 21:22:36 · 9914 阅读 · 5 评论 -
OpenCV学习笔记(十九)——矩形形状的拟合以及周长、面积的计算
前言: 本文我们来学习矩形形状的拟合以及周长、面积的计算。一、点集的最小外包 点集是指坐标点的集。已知二维笛卡尔坐标系中的很多坐标点,需要找到包围这些坐标点的最小外包四边形或者圆,在这里最小指的是最小面积。如下图所示: 在OpenCV中,通过一系列的点(即点集)去找到这三类最小外包几何单元都有相应的函数可以实现。1.1 最小外包旋转矩形 OpenCV提...原创 2018-04-27 14:59:29 · 15319 阅读 · 0 评论 -
OpenCV实战(五)——对象简单计数
现在我们用OpenCV来计数图像当中的目标物体数目,针对各个物体之间没有粘连的情况:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace cv;using namespace std;int main( ){ Mat src_i...原创 2018-04-27 16:11:20 · 9468 阅读 · 7 评论 -
OpenCV学习笔记(二十一)——简单的单目视觉测距尝试
前言: 视觉测距作为机器视觉领域内基础技术之一而受到广泛的关注,其在机器人领域内占有重要的地位,广泛应用于机器视觉定位、目标跟踪、视觉避障等。机器视觉测量主要分为:单目视觉测量、双目视觉测量、结构光视觉测量等。结构光由于光源的限制,应用的场合比较固定;双目视觉难点在于特征点的匹配,影响了测量的精度和效率,其理论研究的重点集中于特征的匹配上;而单目视觉结构简单,运算速度快而具...原创 2018-05-25 18:27:22 · 57297 阅读 · 37 评论 -
OpenCV学习笔记(二十)——车牌的简单定位
今天无意中看到了别人写的一个简单的车牌定位,仔细看了下,确实写的很简单,不足之处: (1)鲁棒性差,阈值分割、轮廓提取过程中的参数选择都是定值,对于不同场景下的不同照片的适应性差。 (2) 定位不够精确。 (3)不具备车牌的校正能力,定位之后的车牌截图没有水平校正,因此大多是倾斜的。 代码如下:# coding=utf-8import cv2...原创 2018-05-16 21:30:23 · 3975 阅读 · 2 评论 -
OpenCV学习笔记(二十一)——车辆识别和跟踪
今天在GitHub上看到一个对车辆训练好的模型,即xml文件,于是拿来测试了一个效果。我用这个xml文件对视频中的每一帧画面进行简单的车辆识别定位,演示代码如下:import cv2import numpy as npcamera = cv2.VideoCapture ("video.avi")camera.open("video.avi")car_cascade = cv2....原创 2018-05-16 22:12:57 · 19150 阅读 · 12 评论 -
OpenCV学习笔记(十三)——SURF特征检测
前言: 特征点的检测和匹配是计算机视觉中非常重要的技术之一。在物体检测、视觉跟踪、三维重建等领域都有很广泛的应用。由于在OpenCV的3.X版本中,许多著名的特征检测算子(比如SIFT、SURF、ORB算子等)所依赖的稳定版的源代码已经从官方发行的OpenCV3中移除,而转移到一个名为xfeature2d的第三方库当中。因此如果是OpenCV的3.X版本,需要自己手动编译安装扩展模块...原创 2018-04-19 21:47:04 · 5177 阅读 · 0 评论 -
OpenCV学习笔记(十五)——积分图像
前言: 有时候只需要计算图像中某个特定区域的直方图。实际上累计图像的某个子区域内的像素总和,是很多计算机视觉算法中常见的过程。现在假设需要对图像中的多个兴趣区域计算几个此类直方图。这些计算过程都马上会变得非常耗时。这种情况下,有一个工具可以极大地提高统计图像子区域像素的效率:积分图像。一、积分图像的原理 为了理解积分图像的实现原理,我们先对它下一个定义。取图像左上侧的全部像素计...原创 2018-04-23 22:28:21 · 6262 阅读 · 3 评论 -
OpenCV学习笔记(十四)——HOG特征检测
OpenCV自带了函数detectMultiScale()可以实现对行人的检测,该算法采用的是hog算法,这一节我们学习其内置的HOG+SVM算法的应用。 HOG(Histogram of Oriented Gridients的简写)特征检测算法,最早是由法国研究员Dalal等在CVPR-2005上提出来的,是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像...原创 2018-04-23 21:01:13 · 799 阅读 · 0 评论 -
OpenCV学习笔记(九)——Sobel边缘检测
前言: Sobel算子是像素图像边缘检测中最重要的算子之一,在机器学习、数字媒体、计算机视觉等信息科技领域起着举足轻重的作用。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。在边缘检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的...原创 2018-04-16 21:52:11 · 9161 阅读 · 2 评论 -
OpenCV实战(一)——简单的车牌识别
前言: 最近一直在学习图像处理,想着找个实践的例子,这样让自己学习起来更加有激情,于是就找了车牌识别的例子,并把它写下来当作学习总结吧。 近年来,汽车车牌识别(License Plate Recognition)已经越来越受到人们的重视。特别是在智能交通系统中,汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起,以...原创 2018-03-28 19:46:12 · 129392 阅读 · 191 评论 -
OpenCV学习笔记(一)——体验OpenCV
前言: Opencv(Opencv Source Computer Vision Library)是开源的计算机视觉库,提供了C++、C、Python以及Java等接口,并支持Windows、Linux、Android、Mac OS平台。通过这个开源的计算机视觉库,我们可以实现计算机视觉、跟踪识别、图像处理等等任务。之前一直是通过python来学习OpenCV这个库,由于任务要求,...原创 2018-04-11 18:29:13 · 6393 阅读 · 4 评论 -
OpenCV学习笔记(十)——Harris算法的改良版之 Shi-Tomasi算法
前言: Shi-Tomasi算法是Harris算法的改进,在Harris算法中,是根据协方差矩阵M的两个特征值的组合来判断是否角点。而在Shi-Tomasi算法中,是根据较小的特征值是否大于阈值来判断是否角点。 这个判断依据是:较小的特征值表示在该特征值方向上的方差较小,较小的方差如果都能够大于阈值,在这个方向上的变化满足是角点的判断要求。 OpenCV中的...原创 2018-04-17 17:07:26 · 1848 阅读 · 0 评论 -
OpenCV学习笔记(二)——初始Mat类
前言: 在计算机内存中,数字图像以矩阵的形式存储和运算,比如,在MatLab中,图像读取之后对应一个矩阵,在OpenCV中,同样也是如此。 在早期的OpenCV1.x版本中,图像的处理是通过IplImage(该名称源于Intel的另一个开源库Intel Image Processing Library ,缩写成IplImage)结构来实现的。早期的OpenCV是用C语言编写,因此提供...原创 2018-04-11 22:43:26 · 1179 阅读 · 0 评论 -
OpenCV学习笔记(十一)——自定义角点检测函数
前言: 我们知道,在OpenCV中已经为我们提供了相关函数——cornerHarris() 函数和 goodFeaturesToTrack()函数,来实现Harris角点检测和Shi-Tomasi角点检测,除此之外,其实我们也可以根据算法的原理和需求来制作角点检测的函数。例如:使用cornerEigenValsAndVecs()函数和minMaxLoc()函数结合来模拟Harris角...原创 2018-04-17 21:45:18 · 3039 阅读 · 1 评论 -
OpenCV学习笔记(三)——图像简单处理
一、图像线性混合 在OpenCV中提供了一个API可以实现两张图片的线性融合,此函数的声明如下:可以看出这个函数最小需要6个参数,其中参数解释如下: 第一个参数,InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。 第二个参数,alpha,表示第一个数组的权重。 第三个参数,src2,表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数。 ...原创 2018-04-12 19:48:02 · 1136 阅读 · 1 评论 -
OpenCV学习笔记(十二)——亚像素角点检测
前言: 图像特征点检测广泛运用于计算机视觉处理领域,包括目标识别与跟踪、立体成像,在特征点的图像分析中,特征点提取是非常重要的步骤,其中,角点是最常见的一类点特征。前面我们介绍了用 Harris提取角点,但是提取的角点是像素级的,精度不高,若我们进行图像处理的目的不是提取用于识别的特征点而是进行几何测量,这通常需要更高的精度。 那么如何提取亚像素级角点的位置呢?在 Ha...原创 2018-04-18 16:58:56 · 18389 阅读 · 5 评论 -
OpenCV学习笔记(四)——绘制简形状与文本
前言: 在图像处理的过程中,我们有时需要在图像或者视频上画上一些图案或者绘上一些文字,在OpenCV中这非常的容易实现。OpenCV中提供了各种功能的绘图函数,使用这些函数,我们可以在图像上绘制直线、矩形、圆、椭圆、多边形等等。一、绘制直线 在OpenCV中提供了line()函数来绘制直线,其中line()函数的声明如下所示:#include <iostream>...原创 2018-04-12 21:36:42 · 922 阅读 · 0 评论 -
OpenCV学习笔记(六)——配置扩展模块
前言: 由于OpenCV功能越来越臃肿,OpenCV3改变了项目架构,使用内核+插件的架构形式。 因此,OpenCV从2.x到3.x是一个很大的转变,对于很多功能不完善、性能不稳定的模块,都被放到了extra_modules(扩展模块)里面了。在Github中,除了存放正式版OpenCV的主仓库和新增加的OpenCV_extra仓库外,还添加了一个OpenCV_contrib的全新仓库...原创 2018-04-13 19:43:50 · 13349 阅读 · 19 评论 -
OpenCV学习笔记(五)——膨胀与腐蚀
前言: 数学形态学提供了一组有用的方法,能够用来调整分割区域的形状以获得比较理想的结果,它最初是从数学中的集合论发展而来并用于处理二值图的,虽然运算很简单,但是往往可以产生很好的效果,后来这些方法推广到普通的灰度级图像处理中。常用的形态学处理方法包括:腐蚀、膨胀、开运算、闭运算、顶帽运算、底帽运算,其中膨胀与腐蚀是图像处理中最常用的形态学操作手段,其他方法是两者相互组合而产生的。 一、膨...原创 2018-04-13 18:01:43 · 31415 阅读 · 1 评论 -
OpenCV学习笔记(七)——高级形态学操作
前言: 本文的主角是OpenCV的morphologyEX函数,它利用基本的膨胀和腐蚀技术,来实现更加高级的形态学变换,如开闭运算、形态学梯度、“顶帽”和“黑帽”等。 首先,我们需要知道,形态学的高级形态,往往都是建立在腐蚀和膨胀这两个基本操作之上的。而关于腐蚀和膨胀的概念和演示代码请参考上一节。有了腐蚀和膨胀的基础,再来学习高级形态学操作就不难了。一、morphologyEX函数 ...原创 2018-04-14 14:32:30 · 2625 阅读 · 0 评论 -
OpenCV学习笔记(二十一)——相机的标定
前言: 摄像机标定是机器人视觉进行目标定位跟踪的首要环节,通过标定板标定好摄像机的内外参数,然后进行后续的定位识别工作。本次将介绍摄像机标定的实验。一、相机标定步骤 OpenCV使用棋盘格板进行标定,如下图所示。为了标定相机,我们需要输入一系列三维点和它们对应的二维图像点。在黑白相间的棋盘格上,二维图像点很容易通过角点检测找到。而对于真实世界中的三维点呢?由于我们采集中,...原创 2018-05-23 17:23:52 · 46677 阅读 · 6 评论