![](https://img-blog.csdnimg.cn/20200301223926690.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
计算机视觉
opencv等
SuperWiwi
这个作者很懒,什么都没留下…
展开
-
OpenCV Python 文章地图及思维导图
文章目录1.文章地图2.思维导图1.文章地图GUI图片视频绘图函数+鼠标基本操作图像基础操作图像运算程序性能检测图像处理颜色空间转换几何变换图像阈值形态学转换图像梯度边缘检测+滑动条图像金字塔直方图图像变换(傅里叶变换)模板匹配图像轮廓Hough变换+分水岭图像分割图像特征提取与描述角点检测SIFT + S...原创 2020-03-18 15:31:15 · 727 阅读 · 0 评论 -
opencv图像特征值特征匹配
文章目录1.什么是蛮力匹配2.对ORB 描述符进行蛮力匹配3.对SIFT 描述符进行蛮力匹配和比值测试4.FLANN 匹配器5.使用特征匹配和单应性查找对象1.什么是蛮力匹配2.对ORB 描述符进行蛮力匹配代码速记:cv2.ORB_create()orb.detectAndCompute()cv2.BFMatcher()bf.match()sorted()cv2.drawMat...原创 2020-03-18 15:08:42 · 1574 阅读 · 0 评论 -
opencv图像特征之尺寸不变特性+算法对比总结
文章目录1.引入SIFT2.opencv中的SIFT3.引入SURF4.opencv中的SURF5.引入FAST算法6.opencv中的FAST算法7.引入BRIEF8.opencv中的BRIEF9.引入ORB算法10.opencv中的ORB算法==11.特征检测+特征描述算法总结==1.引入SIFT在前面我们学习了一些角点检测技术,比如Harris 等。它们具有旋转不变特性,即使图片发生了旋...原创 2020-03-17 17:20:50 · 874 阅读 · 0 评论 -
opencv摄像机标定之对极几何、深度地图
文章目录1.对极几何2.立体图像中的深度地图1.对极几何(1)简单原理在我们使用针孔相机时,我们会丢失大量重要的信心,比如说图像的深度,或者说图像上的点和摄像机的距离,因这是一个从3D 到2D 的转换。因此一个重要的问题就产生了,使用这样的摄像机我们能否计算除深度信息呢?答就是使用多个相机。我们的眼睛就是这样工作的,使用两个摄像机(两个眼睛),这被称为立体视觉。如果只是用一台摄像机我们不...原创 2020-03-17 14:55:51 · 1020 阅读 · 1 评论 -
opencv摄像机标定+姿势估计
文章目录1.原理2.如何找到对象点和图像点3.用opencv方法获取对象点和图像点4.进行摄像机标定并校正图像1.原理今天的低价单孔摄像机(照相机)会给图像带来很多畸变。畸变主要有两种:径向畸变和切想畸变。如果我们想对畸变的图像进行校正就必须找到五个造成畸变的系数:Distortion cofficients = (k1;k2;p1;p2;k3)(k1; k2; p1; p2; k3)(k...原创 2020-03-15 15:50:54 · 1399 阅读 · 0 评论 -
opencv机器学习之K值聚类
文章目录1.原理2.opencv中的K值聚类1.原理2.opencv中的K值聚类代码速记:参数解释:(1)只有一个特征的数据假设我们有一组数据,每个数据只有一个特征(1 维)。我们只使用人们的身高来决定T 恤的大小。我们先来产生一些随机数据,并使用Matplotlib 将它们绘制出来。(2)多个特征的数据(3)颜色量化...原创 2020-03-13 15:22:36 · 369 阅读 · 0 评论 -
opencv机器学习之SVM
文章目录1.SVM原理2.使用SVM 进行手写数据OCR1.SVM原理2.使用SVM 进行手写数据OCR在kNN 中我们直接使用像素的灰度值作为特征向量。这次我们要使用方向梯度直方图Histogram of Oriented Gradients (HOG)作为特征向量。在计算HOG 前我们使用图片的二阶矩对其进行抗扭斜(deskew)处理。代码速记:cv2.ml.SVM_crea...原创 2020-03-13 11:41:56 · 543 阅读 · 0 评论 -
opencv机器学习之KNN
文章目录1.KNN原理2.opencv中的KNN3.使用kNN 对手写数字OCR4.英文字母的OCR1.KNN原理2.opencv中的KNN代码速记:cv2.ml.KNearest_create()knn.train()knn.findNearest()实战:def opencv_knn(self): # 包含(x,y)值的25个点作为训练数据 trainDat...原创 2020-03-12 22:10:58 · 600 阅读 · 0 评论 -
opencv对象检测之Haar分类器面部检测
文章目录1.原理2.opencv中的Haar分类器1.原理以Haar 特征分类器为基础的对象检测技术是一种非常有效的对象检测技术(2001 年Paul_Viola 和Michael_Jones 提出)。它是基于机器学习的,通过使用大量的正负样本图像训练得到一个cascade_function,最后再用它来做对象检测。2.opencv中的Haar分类器OpenCV 自带了训练器和检测器。Op...原创 2020-03-12 21:19:56 · 451 阅读 · 0 评论 -
opencv计算摄影学之图像修补
文章目录1.原理2.opencv中的图像修补1.原理对于照片中小的噪音和划痕,使用坏点周围的像素取代坏点,这样它看起来和周围像素就比较像了。为了实现这个目的,科学家们已经提出了好几种算法,OpenCV 提供了其中的两种。这两种算法都可以通过使用函数cv2.inpaint() 来实施。cv2.INPAINT_TELEA:算法从这个区域的边界开始向区域内部慢慢前进,首先填充区域边界像素。它要...原创 2020-03-11 15:58:27 · 421 阅读 · 0 评论 -
opencv计算摄影学之图像去噪
文章目录1.原理2.去除彩色图像噪声3.去除视频(短序列)噪声1.原理在图像平滑小节介绍了很多算法,如高斯模糊、中值模糊等,它们在一定程度上可以很好地去除少量的噪声。在这些技术中,我们在像素周围取一个小的邻域,并做了一些操作,如高斯加权平均、值的中值等来替换中心元素。简而言之,像素的噪声去除是其邻近区域的局部。噪声有一个性质。我们认为噪声是平均值为一的随机变量。考虑一个带噪声的像素点,p=...原创 2020-03-10 23:30:47 · 435 阅读 · 0 评论 -
opencv视频分析之背景减除
文章目录1.原理2.BackgroundSubtractorMOG3.BackgroundSubtractorMOG24.BackgroundSubtractorGMG1.原理在很多基础应用中背景减除都是一个非常重要的步骤。例如顾客统计,使用一个静态摄像头来记录进入和离开房间的人数,或者是交通摄像头,需要提取交通工具的信息等。在所有的这些例子中,首先要将人或车单独提取出。技术上来说,我们需要...原创 2020-03-10 22:52:24 · 1126 阅读 · 1 评论 -
opencv视频分析之光流
文章目录1.原理2.Lucas-Kanade 法3.稠密光流1.原理由于目标对象或者摄像机的移动,造成的图像对象在连续两帧图像中的移动被称为光流。它是一个2D 向量场,可以用来显示一个点从第一帧图像到第二帧图像之间的移动。上图显示了一个点在连续的五帧图像间的移动。箭头表示光流场向量。光流在很多领域中都很有用: 运动重建结构、视频压缩、Video Stabilization 等。光流是基...原创 2020-03-10 18:04:10 · 677 阅读 · 0 评论 -
opencv视频分析之MeanShift和CamShift
文章目录1.原理2.MeanShift3.CamShift1.原理假设我们有一堆点(比如直方图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗口移动到最大灰度密度处(或者是点最多的地方)。我们通常会传递直方图反向投影图像和初始目标位置。当物体移动时,运动明显地反映在直方图反投影图像中。MeanShift算法会将我们的窗口移动到最大密度的新位置。对于MeanShift...原创 2020-03-10 17:30:16 · 356 阅读 · 2 评论 -
opencv图像处理之图像变换(傅里叶变换)
文章目录1.原理2.Numpy中的傅里叶变换3.opencv中的傅里叶变换3.DFT性能优化4.查看不同算子是低通还是高通1.原理傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用2D 离散傅里叶变换(DFT) 分析图像的频域特性。实现DFT 的一个快速算法被称为快速傅里叶变换(FFT)。对于一个正弦信号:x(t)=Asin(2πft)x(t)=Asin(2πft)x(t)=Asi...原创 2020-03-10 16:17:35 · 1572 阅读 · 0 评论 -
opencv程序性能检测
1.代码速记cv2.getTickCount()cv2.getTickFrequency()time.time()cv2.useOptimized()cv2.setUseOptimized(False)2.实战(1)用opencv函数获取函数执行时间def get_cv_time(self): e1 = cv2.getTickCount()#从参考点到这个函数被执行的时...原创 2020-03-10 14:33:10 · 218 阅读 · 0 评论 -
opencv视频基本操作
文章目录1.读取并显示视频2.保存视频1.读取并显示视频代码速记:cv2.VideoCapture()cap.isOpened()cap.open()cap.get()cap.set()cap.read()cap.release()实战:def capture(self): #【1】创建Capture对象 cap = cv2.VideoCapture(0)...原创 2020-03-09 23:59:06 · 435 阅读 · 0 评论 -
OpenCV教程中提到的论文
1.Canny边缘检测:John F.Canny 在1986 年提出。2.直方图反向投影:Michael J. Swain 和Dana H. Ballard 在他们的文章“Indexing via color histograms”中提出。3.霍夫直线变换优化:Matas, J. ,Galambos, C. 和Kittler, J.V. 提出的Progressive Probabilis...原创 2020-03-09 14:30:23 · 490 阅读 · 0 评论 -
opencv图像特征之角点检测
文章目录1.原理2.opencv中的Harris角点检测3.Shi-Tomasi 角点检测& 适合于跟踪的图像特征4.亚像素级角点检测1.原理Harris 角点检测:将窗口向各个方向移动(u,v)然后计算所有差异的总和。窗口函数可以是正常的矩形窗口也可以是对每一个像素给予不同权重的高斯窗口。根据一个用来判定窗口内是否包含角点的等式进行打分。根据图像的梯度我们可以判断一个区域是否是...原创 2020-03-06 22:53:41 · 863 阅读 · 0 评论 -
opencv图像处理之Hough变换+图像分割案例
文章目录1.什么是Hough直线变换2.opencv中的Hough直线变换3.优化的Hough直线变换4.什么是Hough圆环变换5.分水岭算法图像分割6.使用GrabCut 算法进行交互式前景提取1.什么是Hough直线变换一条直线可以用数学表达式y = mx + c 或者 = x cos + y sin 表示。 是从原点到直线的垂直距离, 是直线的垂线与横轴顺时针方向的夹角(...原创 2020-03-04 11:43:40 · 1683 阅读 · 0 评论 -
opencv绘图函数
文章目录1.代码速记2.画线3.画矩形4.画圆5.画椭圆6.画多边形7.在图片上添加文字8.把鼠标当画笔1.代码速记cv2.line()cv2.polylines()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.putText()cv2.setMouseCallback()参数解释:-img:原图。-color:形状颜色,多色传入...原创 2020-03-04 10:51:36 · 253 阅读 · 0 评论 -
opencv图像处理之轮廓
文章目录0.什么是轮廓1.查找并绘制轮廓2.轮廓特征3.轮廓性质4.凸缺陷、最短距离、形状匹配5.轮廓的层次结构0.什么是轮廓轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者Canny 边界检测。查找轮廓的函数会修改原始图像。如果你在找到轮廓之...原创 2020-03-03 22:58:36 · 1818 阅读 · 0 评论 -
opencv图像处理之模板匹配
文章目录0.什么模板匹配1.匹配单个物体2.匹配多个物体0.什么模板匹配模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。OpenCV 为我们提供了函数:cv2.matchTemplate()。和2D 卷积一样,它也是用模板图像在输入图像(大图)上滑动,并在每一个位置对模板图像和与其对应的输入图像的子区域进行比较。OpenCV 提供了几种不同的比较方法。返回的结果是一个灰度图像,每一...原创 2020-02-29 12:29:26 · 782 阅读 · 0 评论 -
opencv图像处理之直方图
文章目录0.什么是直方图1.整幅图像的直方图2.部分图像的直方图(使用mask)0.什么是直方图通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的x 轴是灰度值(0 到255),y 轴是图片中具有同一个灰度值的点的数目。统计直方图的几个重要参数:BINS:直方图显示了每个灰度值对应的像素数。如果像素值为0到255,你就需要256 个数来显示上面的直方图。但是,如果你不需...原创 2020-02-29 12:13:03 · 737 阅读 · 0 评论 -
opencv图像处理之形态学转换
文章目录1.腐蚀、膨胀、梯度2.开运算、闭运算、礼帽、黑帽3.创建不同形状的核1.腐蚀、膨胀、梯度形态学操作: 根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。腐蚀: 就像土壤侵蚀一样,这个操作会把前景物体的边界腐蚀掉(但是前景仍然是白色)。这是怎么做到的呢?卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,那么中心元素就保持原来的像素值,否则就变为零。这对于去除...原创 2020-02-29 11:54:56 · 298 阅读 · 0 评论 -
opencv图像处理之图像金字塔+图像融合案例
文章目录1.原理2.图像金字塔代码和结果3.图像融合代码和结果1.原理我以前写过一篇 图像金字塔是什么从高斯金字塔计算拉普拉斯金字塔的公式 : Li=Gi−pyrUp(Gi+1)L_i=G_i-pyrUp(G_i+1)Li=Gi−pyrUp(Gi+1)2.图像金字塔代码和结果cv2.pyrDown()cv2.pyrUp()函数cv2.pyrDown() 从一个高分辨率大...原创 2020-02-28 21:49:29 · 526 阅读 · 1 评论 -
opencv图像处理之Canny边缘检测
文章目录1.Canny检测背后的原理2.代码和结果展示1.Canny检测背后的原理【1】高斯平滑:去除噪声由于边缘检测很容易受到噪声影响,所以第一步是使用5x5 的高斯滤波器去除噪声。【2】sobel梯度计算:求梯度大小和方向对平滑后的图像使用Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和Gy)。根据得到的这两幅梯度图(Gx 和Gy)找到边界的梯度和方向,公式如下...原创 2020-02-28 21:13:43 · 366 阅读 · 0 评论 -
opencv图像处理之图像梯度
文章目录1.原理2.Sobel算子3.Laplacian算子4.代码和效果1.原理梯度简单来说就是求导。OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr 和Laplacian。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对Sobel的优化(使用小的卷积核求解求解梯度角度时)。Laplacian 是求二阶导数。2.Sobel算子...原创 2020-02-27 22:11:48 · 530 阅读 · 0 评论 -
opencv图像处理之图像平滑(模糊)
文章目录0.图像模糊介绍1.平均2.高斯模糊3.中值模糊4.双边滤波5.代码与效果*一个关于图像频率的坑0.图像模糊介绍和一维信号一样,我们也可以对2D 图像实施低通滤波(LPF),高通滤波(HPF)等。LPF 帮助我们去除噪音,模糊图像。HPF 帮助我们找到图像的边缘。图像平滑(smoothing)/模糊(blur)就是对2D 图像实施低通滤波。啥叫低通呢?就是图像的低频部分通过...原创 2020-02-27 20:32:45 · 711 阅读 · 0 评论 -
opencv的图像处理之图像阈值
文章目录1.简单阈值2.自适应阈值3.Otsu's二值化1.简单阈值cv2.threshold()ret,dst = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)当像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是cv2.threshold()。这个函数的第一个参数就是...原创 2020-02-27 18:30:43 · 496 阅读 · 0 评论 -
opencv图像处理之几何变换
1.缩放cv2.resize()插值方法flag的值有:INTER_AREA、INTER_CUBIC、INTER_LINEAR等def scale(self): #【1】使用缩放系数 res1=cv2.resize(self.img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC) #【2】设定目标图像大小 height,wi...原创 2020-02-27 16:50:59 · 377 阅读 · 0 评论 -
opencv图像处理之改变颜色空间
颜色空间介绍1.GRAY单通道图片,用0-255来表示每个像素的颜色。2.RGB/BGR人眼RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴奋,这样的...原创 2020-02-27 15:32:07 · 1305 阅读 · 0 评论 -
opencv的图像基本运算
1.相加def add(self): x=np.uint8([250]) y=np.uint8([10]) print(cv2.add(x,y))#260=>255 print(x+y)#260%256=4 plt.subplot(131), plt.title('raw'), plt.imshow(self.img,'gray'),plt.xticks([]...原创 2020-02-26 23:35:51 · 270 阅读 · 0 评论 -
opencv的图像基本操作
1.获取像素、改变像素opencv获取def get_pixel(self): # 根据行列坐标获取像素值,可以直接修改该值 px1 = self.img[100, 100, 0] px2 = self.img[100, 100] # 返回bgr值。如果是灰度图像返回灰度值。 px3 = self.img[100:103, 100:103] # 9个...原创 2020-02-26 23:31:46 · 365 阅读 · 0 评论 -
opencv的gui特性之图像
1.读取、显示、存储图像cv2.imread()cv2.imshow()cv2.imwrite()def read_show_save_img(self, outfile): # 【1】读入图像 img = cv2.imread(self.infile, 0) # 0是以灰度形式读入。1是彩色,-1是包含alpha通道 # 【2】显示图像+窗口操作...原创 2020-02-26 23:25:20 · 300 阅读 · 1 评论 -
图像金字塔是什么?
一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)。如果我们把最大的图像放在底部,最小的放在顶部...原创 2019-11-04 19:41:11 · 1441 阅读 · 0 评论 -
梯度是什么?图像梯度又怎么理解?
梯度:参考1.已知Z=F(X,Y),假设它的图像是这样:2.固定住X,改变Y。在每个点上,函数Z的变化值除以Y的变化值就是此线的斜率。固定住Y,改变X,也是同样的道理3.在每一点,都可以得到在x方向上变化的斜率大小和正负,可以表示为一个箭头。y方向上也是一样。4.梯度就是X方向的箭头和Y方向的箭头的和。假设某一点上,x的偏导数为3,y的偏导数为-1,则该点的梯度...原创 2019-11-04 19:18:20 · 21141 阅读 · 3 评论 -
K-means Visual Words实践——神奇的以图搜图
一、实验目标 给定38张图像作为训练集,10张图像作为测试集。对每张测试图像,在训练集中检索出最相似的图像,按照相似度降序排名。二、数据集概况 一共8组,每组6张图片。brak、boat、graf、wall组的图片经过了旋转或者由不同视角拍摄;bike组的图片经过了不同程度的模糊;leuven组的光照条件逐渐变暗;tree组的图片主要是焦点不同;ubc...原创 2019-11-06 18:20:10 · 1549 阅读 · 0 评论 -
SIFT(Scale-Invariant Feature Transform)是什么?
先下结论:SIFT是图像特征一种。可以用来代表该图像,和别的图像进行对比或别的操作。图像特征具体该怎么理解呢?除了SIFT还有什么别的图像特征,它们之间有什么关联吗?1.OpenCV-Python Tutorial中对图像特征的解释 我相信你们大多数人都玩过拼图游戏吧。首先你们拿到一张图片的一堆碎片,要做的就是把这些碎片以正确的方式排列起来从而重建这幅图像。我们想让计算机也...原创 2019-11-04 21:21:33 · 504 阅读 · 0 评论 -
相机标定+鸟瞰图生成(VS2017+OpenCV)
一、要求:1.用自己的手机采集棋盘板定标数据;2.实现或调用 角点检测、局部特征提取、局部特征匹配算法,标定自己手机的内参;3.改变外参,生成不同视角的新图像。二、实验过程:1.实验前准备:棋盘准备。 拍摄图片。用自己的手机多角度拍摄已经准备好的棋盘,共12张图片。放入pic文件夹,按序号命名:testxx.jpg。 测量数据。A.标定板上每个棋盘格的大小:30mmx...原创 2019-10-13 22:45:17 · 8484 阅读 · 2 评论