
opencv
L鲸鱼与海
大连理工大学,人工智能&医工交叉&多模态融合
展开
-
【双目视觉】摄像头测试
【双目视觉】摄像头测试将从淘宝购买的摄像头,插入电脑USB接口,进行连接,采用如下编写的程序进行摄像头测试。实现代码#include<opencv2/opencv.hpp>using namespace cv;void main() { VideoCapture cap; cap.open(0); //打开摄像头 if (!cap.isOpened()) r...原创 2021-06-04 23:01:30 · 334 阅读 · 0 评论 -
【OpenCV】-32、点多边形测试
【OpenCV】点多边形测试概念介绍 - 点多边形测试 - 测试一个点是否在给定的多边形内部,边缘或者外部相关APIcv::pointPolygonTestpointPolygonTest(InputArray contour,// 输入的轮廓Point2f pt, // 测试点bool measureDist // 是否返回距离值,如果是false,1表示在内面,0表示在边...转载 2021-06-04 23:00:27 · 109 阅读 · 0 评论 -
【OpenCV】-31、图像矩(Image Moments)
【OpenCV】图像矩(Image Moments)矩的概念介绍几何矩几何矩-中心距-中心归一化距图像中心Center(x0, y0)相关API – cv::moments 计算生成数据moments(InputArray array,//输入数据bool binaryImage=false // 是否为二值图像)contourArea...原创 2020-04-30 17:03:27 · 455 阅读 · 0 评论 -
【OpenCV】-30、轮廓周围绘制矩形框和圆形框
【OpenCV】轮廓周围绘制矩形框和圆形框轮廓周围绘制矩形 -APIapproxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)基于RDP算法实现,目的是减少多边形轮廓点数cv::boundingRect(InputArray points)得到轮廓周围最小矩形左上交点...原创 2020-04-30 17:03:19 · 237 阅读 · 0 评论 -
【OpenCV】-29、凸包(Convex Hull)
【OpenCV】凸包-Convex Hull概念介绍什么是凸包(Convex Hull),在一个多变形边缘或者内部任 意两个点的连线都包含在多边形边界或者内部。检测算法Graham扫描法概念介绍-Graham扫描算法首先选择Y方向最低的点作为起始点p0从p0开始极坐标扫描,依次添加p1….pn(排序顺序是根据极坐标的角度大小,逆时针方向)对每个点pi来说,如果添加pi点...原创 2020-04-30 17:03:12 · 287 阅读 · 0 评论 -
【OpenCV】-28、轮廓发现(find contour in your image)
【OpenCV】轮廓发现(find contour in your image)轮廓发现(find contour)轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓的发现结果API介绍findContours发现轮廓drawContours绘制轮廓轮廓发现(find contour)在二值图像上发现轮廓使用APIcv::findC...原创 2020-04-30 17:03:03 · 181 阅读 · 0 评论 -
【OpenCV】-27、模板匹配(Template Match)
【OpenCV】模板匹配(Template Match)模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像-源图像S工作方法,在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。OpenCV中提供了六种常见的匹配算法如下:计算平方不同计算...原创 2020-04-30 17:02:39 · 393 阅读 · 0 评论 -
【OpenCV】-26、直方图反向投影(Back Projection)
【OpenCV】直方图反向投影(Back Projection)反向投影反向投影是反映直方图模型在目标图像中的分布情况简单点说就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型反向投影 – 步骤1.建立直方图模型2.计算待测图像直方图并映射到模型中3.从模型反向计算生成图像实现步骤与相关API加载图片imread将图像从RGB...原创 2020-04-30 17:02:21 · 251 阅读 · 0 评论 -
【OpenCV】-25、直方图比较
【OpenCV】直方图比较直方图比较方法-概述对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。Opencv提供的比较方法有四种:Correlation 相关性比较Chi-Square 卡方比较Intersection 十字交叉性Bhattacharyya distance...原创 2020-04-30 17:02:13 · 207 阅读 · 0 评论 -
【OpenCV】-24、直方图计算
【OpenCV】直方图计算直方图概念上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直方图的概念真正意义,不过是基于图像像素灰度直方图是最常见的。直方图最常见的几个属性:dims 表示维度,对灰度图像来说只有一个通道值dims=1bins 表示在维度中子区域大小划分,bins=256,划分为256个级别range ...原创 2020-04-30 17:02:04 · 164 阅读 · 0 评论 -
【OpenCV】-23、直方图均衡化
【OpenCV】直方图均衡化直方图(Histogram)图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。如何实现,通过上一课中的remap我们知道可以将图像灰度分布从一个分布映射到另外一个分布,然后...原创 2020-04-30 17:01:54 · 185 阅读 · 0 评论 -
【OpenCV】-22、像素重映射(cv::remap)
【OpenCV】像素重映射(cv::remap)什么是像素重映射简单点说,就是把输入图像中各个像素,按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。相关APIcv::remapRemap(InputArray src,// 输入图像OutputArray dst,// 输出图像InputArray map1,// x 映射表 CV_32FC1/CV_32FC2...原创 2020-04-30 17:01:46 · 396 阅读 · 0 评论 -
【OpenCV】-21、霍夫圆检测
【OpenCV】霍夫圆检测霍夫圆检测原理从平面坐标到极坐标转换三个参数假设平面坐标的任意一个圆上的点,转换到极坐标中:处有最大值,霍夫变换正是利用这个原理实现圆的检测。相关API cv::HoughCircles因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波。基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步:1. 检测边缘,发现可能的...原创 2020-04-30 17:01:37 · 327 阅读 · 0 评论 -
【OpenCV】-20、霍夫变换-直线
【OpenCV】霍夫变换-直线霍夫直线变换介绍Hough Line Transform用来做直线检测前提条件 – 边缘检测已经完成平面空间到极坐标空间转换对于任意一条直线上的所有点来说变换到极坐标中,从[0~360]空间,可以得到r的大小属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标,从而得到直...原创 2020-04-30 17:01:15 · 169 阅读 · 0 评论 -
【OpenCV】-19、Canny边缘检测
【OpenCV】Canny边缘检测Canny算法介绍:Canny是边缘检测算法,在1986年提出的。是一个很好的边缘检测器很常用也很实用的图像处理方法五步 cv::Canny高斯模糊 - GaussianBlur灰度转换 - cvtColor计算梯度 – Sobel/Scharr非最大信号抑制高低阈值输出二值图像Canny算法介绍 - 非最大信号抑制Canny算法介绍-高...原创 2020-04-30 17:01:06 · 227 阅读 · 0 评论 -
【OpenCV】-18、Laplance算子
【OpenCV】Laplance算子解释:在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。Laplance算子->拉普拉斯算子(Laplance operator)Opencv已经提供了相关API - cv::Laplance处理流程高斯模糊 – 去噪声GaussianBlur()转换为灰度图像cvtCol...原创 2020-04-30 17:00:52 · 133 阅读 · 0 评论 -
【OpenCV】-17、Sobel算子
【OpenCV】Sobel算子卷积应用-图像边缘提取边缘是什么 – 是像素值发生阶跃变化的地方,是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用。如何捕捉/提取边缘 – 对图像求它的一阶导数delta = f(x) – f(x-1), delta越大,说明像素在X方向变化越大,边缘信号越强Sobel算子是离散微分算子(discrete differenti...原创 2020-04-30 17:00:43 · 311 阅读 · 1 评论 -
【OpenCV】-16、图像的边缘处理
【OpenCV】处理边缘卷积边缘问题图像卷积的时候边界像素,不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。处理边缘在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。openC...原创 2020-04-30 17:00:20 · 459 阅读 · 0 评论 -
【OpenCV】-15、自定义线性滤波
【OpenCV】自定义线性滤波卷积概念卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:Sum = 8x1+6x1+6x1+2x1+8x1+6x1+2x1+...原创 2020-04-30 17:00:10 · 141 阅读 · 0 评论 -
【OpenCV】-14、基本阈值操作
【OpenCV】基本阈值操作图像阈值(threshold)阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)1 阈值类型一阈值二值化(threshold binary)表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值2 阈值类型一阈值反二值化(threshold binary Inver...原创 2020-04-30 17:00:00 · 257 阅读 · 0 评论 -
【OpenCV】-13、图像上采样和降采样
【OpenCV】图像上采样和降采样图像金字塔概念我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔一个图像金字塔由一系列的图像组成,最底一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。高斯金子塔 – 用来对图像进行降采样拉普拉斯金字塔 –...原创 2020-04-30 16:59:51 · 316 阅读 · 0 评论 -
【OpenCV】-12、形态学操作应用-提取水平与垂直线
【OpenCV】形态学操作应用-提取水平与垂直线原理方法图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值腐蚀,输出的像素值是...原创 2020-04-30 16:59:42 · 218 阅读 · 0 评论 -
【OpenCV】-11、形态学操作
【OpenCV】形态学操作开操作- open闭操作- close形态学梯度- Morphological Gradient顶帽 – top hat黑帽 – black hat开操作- open先腐蚀后膨胀可以去掉小的对象,假设对象是前景色,背景是黑色闭操作-close先膨胀后腐蚀(bin2)可以填充小的洞(fill hole),假设对象是前景色,背景是黑色形态学梯...原创 2020-04-30 16:59:33 · 181 阅读 · 0 评论 -
【OpenCV】-10、膨胀与腐蚀
【OpenCV】膨胀与腐蚀形态学操作(morphology operators)(1)图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学(2)形态学有四个基本操作:腐蚀、膨胀、开运算、闭运算(3)膨胀与腐蚀是图像处理中最常用的形态学操作手段形态学操作-膨胀跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计...原创 2020-04-30 16:58:56 · 122 阅读 · 0 评论 -
【OpenCV】-09、图像模糊(2)——中值滤波、双边滤波
【OpenCV】图像模糊(2)——中值滤波、双边滤波中值滤波统计排序滤波器中值对椒盐噪声有很好的抑制作用双边滤波(1) 均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重(2)高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同(3) 高斯双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变相关API中值模糊m...原创 2020-04-30 16:58:45 · 238 阅读 · 0 评论 -
【OpenCV】-08、图像模糊(1)——均值模糊、高斯模糊
【OpenCV】图像模糊(1)模糊原理Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就为了给图像预处理时候减低噪声使用Smooth/Blur操作其背后是数学的卷积计算通常这些卷积算子计算都是线性操作,所以又叫线性滤波假设有6x6的图像像素点矩阵。卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像个像素点值之和取平均值赋给中心...原创 2020-04-30 16:58:37 · 332 阅读 · 0 评论 -
【OpenCV】-07、绘制形状与文字
【OpenCV】绘制形状与文字一、使用cv::Point与cv::Scalar1、Point表示2D平面上一个点x,yPoint p; p.x = 10; p.y = 8;或者p = Pont(10,8);2、Scalar表示四个元素的向量Scalar(a, b, c);// a = blue, b = green, c = red表示RGB三个通道二、绘制线、矩形、园、...原创 2020-04-30 16:58:17 · 138 阅读 · 0 评论 -
【OpenCV】-06、图像亮度与对比度调整
【OpenCV】调整图像亮度与对比度理论图像变换可以看作如下:像素变换 – 点操作邻域操作 – 区域调整图像亮度和对比度属于像素变换-点操作相关的APIMat new_image = Mat::zeros( image.size(), image.type() ); 创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0saturate_cast(value)确保值大小...原创 2020-04-30 16:58:06 · 129 阅读 · 0 评论 -
【OpenCV】-05、图像混合操作
【OpenCV】图像混合理论-线性混合操作alpha取值0-1相关API (addWeighted)参数1:输入图像Mat – src1参数2:输入图像src1的alpha值参数3:输入图像Mat – src2参数4:输入图像src2的alpha值参数5:gamma值参数6:输出混合图像注意点:两张图像的大小和类型必须一致才可以代码实现#include<openc...原创 2020-04-30 16:57:55 · 124 阅读 · 0 评论 -
【OpenCV】-04、Mat对象
Mat对象Mat对象与IplImage对象Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题Mat对象构造函数与常用方法常用方法:vo...原创 2020-04-30 16:57:40 · 158 阅读 · 0 评论 -
【OpenCV】-02、修改像素值
【OpenCV】修改像素值图像操作读写图像读写像素修改像素值imread 可以指定加载为灰度或者RGB图像Imwrite 保存图像文件,类型由扩展名决定读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at<uchar>(y, x); 或者Scalar intensity = img.at<uchar>(Poi...原创 2020-04-30 16:57:04 · 1144 阅读 · 0 评论 -
【OpenCV】-01、最小外接矩形和最小圆
将一幅图像先转灰度,再canny边缘检测得到二值化边缘图像,再寻找轮廓,轮廓是由一系列点构成的,要想获得轮廓的最小外接矩形,首先需要得到轮廓的近似多边形,用道格拉斯-普克抽稀(DP)算法,道格拉斯-普克抽稀算法,是将曲线近似表示为一系列点,并减少点的数量的一种算法。1)对曲线的首末点虚连一条直线,求曲线上所有点与直线的距离,并找出最大距离值dmax,用dmax与事先给定的阈值D相比:2)若dm...原创 2020-04-30 16:56:33 · 528 阅读 · 0 评论