OpenCV
文章平均质量分 92
点滴成海~
醉心图像,计算机视觉,人工智能和深度学习的逐梦人,希望认识大牛,一步步提高自己。
展开
-
opencv-彩色RGB图像的像素值操作
刚刚起步开始学习opencv图像处理:今天学习的是怎样对于一幅RGB图像转变为灰度图像(并不是采用API直接实现),并对RGB图像不同位置的像素值进行读取,以及对像素值进行修改。主要用到的函数:(读取图像的像素值)//读取图像的像素值int b=img.at(y,x)[0]; // blueint g=img.at(y,x)[1]; // greenint r=img.at(原创 2018-01-06 20:18:35 · 15643 阅读 · 1 评论 -
【OpenCV学习笔记】之直方图(Histogram)
一、直方图概述(Histogram Overview) 在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表,他的两个坐标分别是统计样本(图像、视频帧)和样本的某种属性(亮度,像素值,梯度,方向,色彩等等任何特征)。 也可以这么理解,直方图是对数据的统计,并把统计值显示到事先设定好的bin(矩形条)中,bin中的数值是从数据中计算出的特征的...原创 2018-08-20 09:16:11 · 72750 阅读 · 11 评论 -
【OpenCV学习笔记】之图像混合、叠加和对比度、亮度调整
一、图像混合、叠加 图像线性混合的数学原理 :G(x)=(1-a)F(x)+aQ(x)注意事项:1,a的取值范围为0到1之间2,F(x)和Q(x)为参与混合的两幅图像,G(x)表示输出图像3,通过对两幅图像的每个像素值做线性加权得到最终的输出图像4,两幅图像的大小和类型必须完全一致,如果把图像当成一个矩阵则两个矩阵相加的前提是维度必须一致,否则没有相加的意义...原创 2018-08-04 13:18:40 · 6271 阅读 · 0 评论 -
【OpenCV学习笔记】之图像平滑(线性/非线性滤波器)
一、图像平滑(smoothing) 图像平滑(smoothing)也称为“模糊处理”(bluring), 是一项简单且使用频率很高的图像处理方法。可以用来压制、弱化或消除图像中的细节、突变、边缘和噪声。但最常见的是用来减少图像上的噪声或者失真。降低图像分辨率时,平滑处理是很重要的。说到噪声,两种噪声应该提一下:椒盐噪声:噪声的幅值基本上相同,但是噪声出现的位置是随机的;...原创 2018-08-11 10:23:11 · 22983 阅读 · 1 评论 -
【OpenCV学习笔记】之形态学操作(Morphological Processing)
一、图像的形态学操作(Morphological Image Processing) 形态学一般指生物学中研究动物和植物结构的一个分支。用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具。基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。形态学图像处理的数学基础和所用语言是集合论。形态学图像处理的应用可以简化图像数据,保持...原创 2018-08-11 10:23:45 · 16987 阅读 · 1 评论 -
【OpenCV学习笔记】之离散傅里叶变换(DFT)
图像的离散傅里叶变换: 傅里叶变换可以将一幅图片分解为正弦和余弦两个分量,换而言之,他可以将一幅图像从其空间域(spatial domain)转换为频域(frequency domain)。这种变换的思想是任何函数可以很精确的接近无穷个sin()函数和cos()函数的和。傅里叶变换提供了这种方法来达到这种效果。 对于数字图像这种离散的信号,频率大小表示信号变...原创 2018-08-04 13:18:55 · 5317 阅读 · 0 评论 -
【OpenCV学习笔记】之图像轮廓特征与图像的矩
一、图像的轮廓(Contours of Image) 轮廓可以说是一个很好的图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义。那么,怎么取提取轮廓呢?轮廓提取的基本原理: (针对二值化的轮廓提取是这样的)对于一幅背景为白色、目标为黑色的二值图像,如果在图中找到一个黑色点,且它的8邻域(或4邻域)也均为黑色,则说明...原创 2018-08-20 09:16:20 · 13144 阅读 · 0 评论 -
【OpenCV学习笔记】之基于距离变换与分水岭图像分割算法
什么是图像分割?图像分割(Image Segmentation)是图像处理最重要的处理手段之一。 图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。 根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法 - KMeans 距离变换常见算法有两种: 距离变换的定义 :计算图像中像素点到最近零像素点的距离,也就是...原创 2018-08-20 09:16:34 · 4712 阅读 · 4 评论 -
OpenCV——角点检测原理分析(Harris,Shi-Tomasi、亚像素级角点检测)
一、角点(corner) 角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等,也可称为特征点检测。1、角点的类型 2、角点检测算法的基本思想: ...原创 2018-08-20 09:16:57 · 43153 阅读 · 10 评论 -
【OpenCV学习笔记】之霍夫变换(Hough Transform)
一、霍夫变换(Hough transform)常见的理论概述是这样的:1、简单介绍 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。Hough变换是图像处理中从图像中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这...原创 2018-08-20 09:15:45 · 25528 阅读 · 4 评论 -
【OpenCV学习笔记】之仿射变换(Affine Transformation)
图像的几何变换——拉伸、收缩、扭曲、旋转(stretch,shrink,distortion,rotation) 拉伸、收缩、扭曲、旋转是图像的几何变换,在三维视觉技术中大量应用到这些变换,又分为仿射变换和透视变换。仿射变换通常用单应性(homography)建模,利用cvWarpAffine解决稠密仿射变换,用cvTransform解决稀疏仿射变换。仿射变换可以将矩形转换...原创 2018-08-20 09:16:01 · 64408 阅读 · 7 评论 -
【OpenCV学习笔记】之卷积及卷积算子(convolution)
一、简单理解卷积的概念1.1卷积的定义:定义任意两个信号的卷积为 这里的*代表卷积的运算符号, 是中间变量,两个信号的卷积仍是以t为变量的信号。类似地,离散的信号的卷积和: 1.2 卷积的计算步骤:...原创 2018-08-11 10:26:56 · 39617 阅读 · 4 评论 -
【OpenCV学习笔记】之访问图像的像素与ROI感兴趣区域选取
一、图像像素的操作访问图像像素值是图像处理的基本操作。OpenCV提供了很多访问方式,比较常用的三种方式: (1) 通过指针访问 (2) 通过迭代器访问 (3) 动态地址计算,通过at()函数实现方法比较: (1)用指针访问像素,速度最快;但在彩色图像处理中,如果要单独对某一个颜色分量处理,则需要通过数学公式计算,不是很直观; (2)推荐用通过迭代器访问像素,速度快,而且提取BG...原创 2018-08-04 13:18:16 · 7262 阅读 · 1 评论 -
【OpenCV学习笔记】之Mat结构与基本数据结构、函数
一、Mat 我们知道相机,摄像机,扫描仪或者磁共振等设备生成的图像都是数字图像,它其实就是一个矩阵,矩阵行列上的值就是其像素值。我们进行图像处理,其实就是对图像矩阵进行不同的操作。那么OpenCV里面是怎么对图像进行存储和处理的呢? 在老版本的OpenCV1.X里面,通常用的是一个名为IplImage*的指针进行图像的存储。但是这种基于C语言的接口的格式,有一...原创 2018-08-04 13:18:00 · 4454 阅读 · 0 评论 -
VS2017可用的Image Watch
Image Watch是用于在调试本机C ++代码时查看内存位图的监视窗口。当前版本内置了对OpenCV图像类型(cv :: Mat,cv :: Mat _ <>,CvMat,_IplImage)的支持。 要启用用户定义的图像类型,请参阅Image Watch文档。该版本适用于Visual Studio 2017。 快速启动:只需在调试器中断并选择查看>其他窗口>...原创 2018-05-27 22:40:36 · 6843 阅读 · 1 评论 -
main函数中的argc和argv的含义
我们在一些比较权威书籍,如《学习OpenCV》中给出的一些程序案例中,一般main函数的写法会带两个形参:int main(int argc,char** argv){ Mat src=imread("girl.jpg");}但,其实main函数,如main(int argc,char* argv[ ],char** env),是UNIX,Linux以及Mac OS操作系统中C...原创 2018-07-03 21:05:40 · 816 阅读 · 0 评论 -
【OpenCV学习笔记】之OpenCV编程规范
一个规范的编程习惯,完全可以给程序的编写和自身的调试带来极大的便利。同时也会增强自己代码的可读性,让别人更快的理解我们的思路。1.文件命名规则所有的Cv和CvAux库文件的命名必须符合以下规则。1)前缀位cv;2)C/C++头文件扩展名为”.h”,C++头文件扩展名为”.hpp”;3)源文件扩展名”.cpp”;4)文件名小写,兼容POSIX;2.数据类型...原创 2018-08-04 13:17:42 · 2103 阅读 · 0 评论 -
【OpenCV学习笔记】之鼠标的调用
记录自己学习opencv里面如何调用鼠标完成一些事件。在完成跟踪算法时常常会在第一帧框选出目标,这时候就需要调用鼠标来完成。setMouseCallback()函数原型:C++:void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)(1)winnam...原创 2018-07-31 17:01:26 · 1596 阅读 · 0 评论 -
【OpenCV学习笔记】之漫水填充算法(Flood Fill Algorithm)
漫水填充算法(Flood Fill Algorithm) 漫水填充法是一种用特定的颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。漫水填充算法基本思想: ...原创 2018-08-11 10:24:37 · 4082 阅读 · 0 评论 -
【OpenCV学习笔记】之图像金字塔(Image Pyramid)
一、尺度调整 顾名思义,即对源图像的尺寸进行放大或者缩小变换。在opencv里面可以用resize函数,将源图像精准地转化为指定尺寸的目标图像。要缩小图像,一般推荐使用CV_INETR_AREA(区域插值)来插值;若要放大图像,推荐使用CV_INTER_LINEAR(线性插值)。这个函数可以用来做简单的图像尺度变换。而下面要说的图像金字塔的用处很大,在特征检测中都是基础理论和技术;...原创 2018-08-11 10:25:17 · 49798 阅读 · 1 评论 -
【OpenCV学习笔记】之基本阈值操作(Threshold)
阈值化(Threshold) 阈值化,即图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图...原创 2018-08-11 10:26:15 · 11076 阅读 · 3 评论 -
【OpenCV学习笔记】之边缘检测
一、边缘检测边缘(edge)是指图像局部强度变化最显著的部分。主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征和形状特征等图像分析的重要基础。图像强度的显著变化可分为:阶跃变化函数,即图像强度在不连续处的两边的像素灰度值有着显著的差异; 线条(屋顶)变化函数,即图像强度突然从一个值变化到另一个值,保持一较小行程后又回到原来的值。图像的边缘有方向...原创 2018-08-13 14:16:23 · 3383 阅读 · 0 评论