opencv
文章平均质量分 86
kuweicai
这个作者很懒,什么都没留下…
展开
-
霍夫变换圆检测原理及 OpenCV API 应用
霍夫变换圆检测原理及 OpenCV API 应用1. 霍夫圆变换霍夫圆检测和霍夫直线检测的原理类似。建议先理解霍夫直线检测的原理,再来看霍夫圆检测。圆在极坐标下的数学表达式如下:{x=a+r⋅cosθy=b+r⋅sinθ\left\{ \begin{aligned}x = a + r\cdot cos\theta \\y = b + r\cdot sin\theta \\\end{aligned}\right.{x=a+r⋅cosθy=b+r⋅sinθ其中 a,ba, ba,b 是原创 2020-11-30 14:40:47 · 1860 阅读 · 1 评论 -
霍夫变换直线检测原理及 OpenCV API 应用
霍夫变换直线检测原理及 OpenCV API 应用1. 霍夫变换霍夫变换(Hough Transform)于1962年由Paul Hough 首次提出,后于1972年由Richard Duda和Peter Hart推广使用,是图像处理领域内从图像中检测几何形状的基本方法之一。经典霍夫变换用来检测图像中的直线,后来霍夫变换经过扩展可以进行任意形状物体的识别,例如圆和椭圆。霍夫变换运用两个坐标空间之间(图像空间和霍夫空间)的变换,将在一个图像空间中具有相同形状的曲线或直线映射成霍夫空间的一个点,从而把检测原创 2020-11-30 14:35:58 · 1630 阅读 · 0 评论 -
角点检测(Harris & Shi-Tomas)的原理及OpenCV API 的应用
角点检测(Harris & Shi-Tomas)的原理及OpenCV API 的应用这篇博客的内容主要时对参考中多篇博客的总结。1. 角点在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。关于角点的具体描述可以有几种:1). 一阶导数(即灰度的梯度)的局部最大所对应的像素点;2). 两条及两条以上边缘的交点;3). 图像中梯度值和梯度方向的变化速率都很高的点;4).角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。从求解思路上可以分为原创 2020-11-29 23:10:13 · 2028 阅读 · 0 评论 -
Jupyter NoteBook 中使用 cv2.imshow 显示图片
Jupyter NoteBook 中使用 cv2.imshow 显示图片有两种办法:用 cv2.imshow时加入cv2.destroyAllWindows()用 plt.imshow() 代替 cv2.imshow1. cv2.imshow加入 cv2.destroyAllWindows() 后可以解决 crash 或者图片显示不出来的问题。import cv2%matplot...原创 2019-12-02 23:29:36 · 41403 阅读 · 6 评论 -
SIFT特征提取分析及Opencv API调用
转载自:SIFT特征提取分析,略有改动。SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配,获得了良好效果,详细解析如下:算法描述SIFT特征不只具有尺度不变性,即使...转载 2017-12-22 20:54:49 · 2407 阅读 · 0 评论 -
伽马(Gamma)校正的原理及opencv实现
转自 Gamma校正及其OpenCV实现,略有改动。 一、什么是Gamma校正?Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:[2]这个指数即为Gamma.经过Gamma校正后的输入和输出图像灰度值关系如图1所示:横坐标是输入灰度值,纵坐标是输出灰度值,蓝色曲线是gamma值小于1时的输入输出关系,红色转载 2018-01-03 21:20:55 · 12398 阅读 · 0 评论 -
HOG特征检测的原理及opencv API调用
查看了一些关于HOG特征检测的文章,觉得Histogram of Oriented Gradients这一篇文章讲的比较清楚。整理如下。1.预处理用于计算HOG特征的图像一般都是选择大小为64x128像素大小。在opencv中可以直接调用resize()来完成,得到src。当然也有先裁剪在resize()的操作方式。这里也可以采用gamma correction对src进行处理原创 2018-01-06 15:51:19 · 7200 阅读 · 1 评论 -
opencv中的图像矩(空间矩,中心矩,归一化中心矩,Hu矩)
1. opencv计算图像矩的APIC++: Moments moments(InputArray array, bool binaryImage=false )Python: cv2.moments(array[, binaryImage]) → retvalC: void cvMoments(const CvArr* arr, CvMomen原创 2018-01-10 19:45:05 · 15752 阅读 · 0 评论 -
LBP小结:LBP及改进版本的原理和opencv实现源代码
转自LBP特征原理及代码实现一、LBP特征的背景介绍LBP指局部二值模式,英文全称:Local Binary Pattern,是一种用来描述图像局部特征的算子,LBP特征具有灰度不变性和旋转不变性等显著优点。它是由T. Ojala, M.Pietikäinen, 和 D. Harwood [1][2]在1994年提出,由于LBP特征计算简单、效果较好,因此LBP特征在计算机视觉的许转载 2018-01-11 22:28:48 · 5613 阅读 · 3 评论 -
opencv中归一化函数normalize()的原理讲解
1. 归一化归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。归一化的目的,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系,......原创 2018-01-06 15:47:47 · 81710 阅读 · 10 评论 -
经典人脸识别算法小结——EigenFace, FisherFace & LBPH(上)
该文章由下面两部分组成:1).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(上),这部分介绍人脸开源库,和图片的读取等准备工作。2).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(下),这部分介绍三种人脸识别算法。1. 人脸数据库在开始之前,首先介绍几个常用的开源face database,上面可以下载人脸图像...原创 2018-02-10 20:14:16 · 5800 阅读 · 1 评论 -
经典人脸识别算法小结——EigenFace, FisherFace & LBPH(下)
该文章由下面两部分组成:1).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(上),这部分介绍人脸开源库,和图片的读取等准备工作。2).经典人脸识别算法小结——EigenFace, FisherFace & LBPH(下),这部分介绍三种人脸识别算法。如果对于opencv中的人脸识别API感兴趣,可参看官方的说明:Face Recognition ...原创 2018-02-16 17:57:37 · 27855 阅读 · 7 评论 -
SURF特征提取原理详细分析及opencv API调用
1. SURF比于SIFT(转自SIFT/SURF算法的深入剖析)SURF(Speeded Up Robust Features)是对SIFT的改进版本,改进后的主要优点是速度更快,更适合做实时的特征检查。对于需要实时运算的场合,如基于特征点匹配的实时目标跟踪系统,每秒要处理8-24帧的图像,需要在毫秒级内完成特征点的搜索、特征矢量生成、特征矢量匹配、目标锁定等工作,这样SIFT算法就很难适应...转载 2017-12-28 21:38:26 · 7727 阅读 · 4 评论 -
导向滤波小结:从导向滤波(guided filter)到快速导向滤波(fast guide filter)的原理,应用及opencv实现代码
1. 导向滤波简介导向滤波是何凯明在学生时代提出的一个保边滤波(edge-preserving smoothing)算法。何凯明在cv圈应该算是名人了,学生时代关于图像去雾的研究就以第一作者的身份获得Best Paper Award(CVPR 2009),而且今年刚刚又斩获Marr Prize(ICCV 2017)。更多关于何凯明的最新研究动态可以点击以下链接何凯明。导向滤波顾名思义,就是原创 2017-10-29 15:49:43 · 38761 阅读 · 5 评论 -
opencv显示图像的傅里叶谱图像(频谱)源代码详解
1. 频率域通过傅里叶变换连接空间域和频率域,其是频率域滤波的基础。这里将结合opencv中的sample文档(\source\sample目录下的dft.cpp),对一副灰度图像进行傅里叶变换,并显示其傅里叶谱图像。2. 傅里叶谱显示#include#includeint main(void){ //加载一副灰度图像 cv::Mat src=cv::imrea原创 2017-08-02 21:45:48 · 10021 阅读 · 2 评论 -
如何查看Opencv中函数的源代码--imread()的源代码
1. 查看opencv中函数的源代码为了查看opencv中的源代码,可以安装cmake,编译一个.sln工程,如下图所示。这样可以很方便的查看函数的源代码。关于配置cmake的方法可以直接百度,有很多相关教程2. imread()的源代码imread函数原型如下,filename是文件名,flags默认为1,其含义同上iscolor枚举。[c转载 2017-06-17 23:26:58 · 11229 阅读 · 0 评论 -
opencv访问(Mat)图像的像素方法汇总
转载自http://blog.csdn.net/yang_xian521/article/details/71821851.存取单个像素值最通常的方法就是[cpp]view plaincopyimg.at(i,j)=255;img.at(i,j)[0]=255;如果你觉得at操作显得转载 2017-08-03 21:39:31 · 1748 阅读 · 0 评论 -
Opencv中的copyMakeBorder和borderInterpolate以及getRectSubPix函数讲解
转自:http://blog.csdn.net/qianqing13579/article/details/42323397#comments在OpenCV滤波算法中,有两个非常重要的基本工具函数,copyMakeBorder和borderInterpolatecopyMakeBorder函数原型void copyMakeBorder( co转载 2017-09-06 23:05:57 · 2970 阅读 · 0 评论 -
opencv中Mat类成员函数clone()和copyto()的区别
// Mat is basically a class with two data parts: the matrix header and //a pointer to the matrix containing the pixel values #include #include using namespace std ; using na转载 2017-09-18 21:57:11 · 14876 阅读 · 0 评论 -
opencv3.1.0/3.2.0+contrib模块编译总结
查看了不少相关的博客,但是都没有编译通过,尝试了好久才成功,这里做个总结吧。我编译成功的版本为:opencv 3.1.0VS2013CMaker3.9.3系统为W10x64bit后来也用过opencv3.2.0,编译过程一样,只是需要注意opencv3.2.0对应的是VS2015。1. 关于opencv_contrib模块contrib模块是不包含在openc...原创 2017-09-20 22:14:50 · 6391 阅读 · 0 评论 -
Opencv 中cv开头的函数和没有cv的区别,例如cvWaitkey()和waitKey()的区别
1. 问题描述在opencv中,有很多功能类似或者相同的函数,例如cvWaitKey()和waitKey()。新手在刚刚接触opencv时,很容易弄糊涂,到底有什么区别,为什么要有这些功能类似的函数。2. 寻找答案2.1 为什么有cvWaitKey(),还有waitKey()?其实这个问题的答案可以在opencv的官方文档中找到答案。就拿opencv3.0 为例,可原创 2017-06-08 22:23:29 · 4629 阅读 · 0 评论 -
opencv彩色图像(RGB)转灰度图像及其优化
1. 彩色图像转灰度图像RGB转灰度,通常会使用下面的一个心理学公式:(Matlab和OpenCV中使用的也是该公式)Gray = 0.2989*R + 0.5870*G + 0.1140*B实现代码如下#include//通过上述计算公式得到灰度图像void grayImageShow(cv::Mat &input, cv::Mat &output)转载 2017-06-18 22:32:01 · 14177 阅读 · 1 评论 -
Opencv绘制灰度/彩色图像的直方图及直方图的均衡化实例及源代码
1. Opencv中的坐标关系在开始绘制直方图之前,需要明确Opencv中采用的坐标关系。下图非常清晰的标出了三种常用的坐标轴名称,及相互的关系。2. 灰度图像的直方图及均衡化利用opencv中的calcHist()函数计算直方图,利用equalizeHist()对直方图进行均衡化,然后利用rectangle()(通过绘制多个矩形/线条)绘制出直方图。下面是对一张图原创 2017-06-27 22:56:56 · 7208 阅读 · 0 评论 -
opencv中常用的线性滤波器--boxFilter(),blur(),GaussianBlur()
1. boxFilter()下面是opencv官方对boxFilter()函数的介绍。如果均衡化(即normalize==ture,这也是默认值),则其本质是均值滤波。C++: void boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1)原创 2017-07-04 22:17:20 · 24594 阅读 · 0 评论 -
opencv中常用的非线性滤波器--中值滤波medianBlur() 和 双边滤波bilateralFilter()
1.1 中值滤波中值滤波的原理很简单,就是用像素点邻域灰度值的中值来代替该像素点的灰度。由于中值滤波是基于排序统计理论,所以其对脉冲噪声、椒盐噪声会有很好的滤波效果,并能保留图像的边缘细节。但是代价就是效率低,花费的时间是均值滤波的5倍以上。opencv中对应的函数为medianBlur(), 下面分别利用高斯滤波和中值滤波对衣服有椒盐噪声的图片进行滤波。1.2 源代码及滤波效原创 2017-07-06 22:42:08 · 6977 阅读 · 0 评论 -
数字图像的缩放及opencv中的实现
1. 数字图像的缩放常用的数字图像的缩放的方式有最近邻插值、双线性插值、双三次插值。最近邻插值就是把目标图像的像素点映射到原图像中,那个像素离得最近,就把目标图像中的像素值取为该点的值。双线性插值是指考虑两个方向(X & Y),四个像素点来计算目标图像中的像素值。和最近邻相比,每个双线性不仅考虑了两个方向,并且每个方向上考虑了目标像素与原像素点的距离的加权。双线性内插法转载 2017-07-23 16:14:11 · 6850 阅读 · 1 评论 -
为什么opencv显示图像为灰色,或者访问不到图像——图像的路径问题
1. 问题描述 在配置好opencv后的第一个测试程序一般都是调用cvLoadImage()函数来读取一幅图像,但是却会遇到整个窗口都是灰色的情况。如下图所示。 2. 问题分析上面的图像是用如下的代码运行的结果。 #in原创 2017-05-07 22:36:10 · 9297 阅读 · 2 评论