Opencv(CV2)学习与实战
介绍如何使用OpenCV的一些算法,适用于初学者。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
cchangcs
Make something different!
毕业于武汉大学软件工程专业,现就职于某厂。
展开
-
cv2霍夫圆环检测(HoughCircle)
本篇博客主要介绍利用霍夫变换来进行圆环检测。一个圆环需要3个参数来确定,所以进行圆环检测的累加器必须是三维的,这样效率就会很低,因此OpenCV使用了霍夫梯度法这个巧妙的方法,来使用边界的梯度信息,从而提升计算的效率。cv2中进行霍夫圆环检测的函数:cv2.HoughCircles(image,method,dp,minDist,circles=None,param1=None,...原创 2018-07-20 11:02:24 · 33276 阅读 · 12 评论 -
cv2给图像上色
本文主要介绍采用python中的cv2模块实现图片上色。首先需要下载预训练的model。1、创建getModels.sh文件,并输出如下内容:mkdir modelswget https://github.com/richzhang/colorization/blob/master/colorization/resources/pts_in_hull.npy?raw=true -O...原创 2018-12-08 15:32:44 · 2914 阅读 · 1 评论 -
cv2手势动态识别
本篇文章主要介绍使用cv2来实现手势的动态识别。下面是示例代码:import cv2import numpy as npcapture = cv2.VideoCapture(0)while capture.isOpened(): ret, frame = capture.read() cv2.imshow("frame", frame) # 中值滤波,去除椒...原创 2018-10-24 15:23:05 · 2227 阅读 · 1 评论 -
cv2拼接图片
本篇文章介绍使用cv2对图片进行拼接,主要使用到cv2.createStitcher(try_use_gpu=None)方法,该方法里的参数try_use_gpu为是否尝试使用GPU进行图片拼接。下面是示例代码:import cv2import osimport numpy as nptry_use_gpu =Falseimgs = []result_name = 'resu...原创 2018-10-24 11:01:25 · 5747 阅读 · 2 评论 -
cv2将图片拼接为视频
示例代码:import cv2import osdef getName(x): if x <10: strRes = '0000' + str(x) elif x <100: strRes = '000' + str(x) elif x <1000: strRes = '00' + str(x)...原创 2018-10-21 16:11:50 · 4556 阅读 · 1 评论 -
cv2实现基于粒子滤波的目标跟踪
目标跟踪过程分为2部分,即目标特征提取和目标跟踪算法。 其中目标特征提取又包括以下几种:1. 各种色彩空间直方图,利用色彩空间的直方图分布作为目标跟踪的特征,可以减少物体远近距离的影响,因为其颜色分布大致相同。2.轮廓特征,提取目标的轮廓特征,可以加快算法的速度,且可以在目标有小部分影响的情况下同样有效果。3. 纹理特征,如果被跟踪目标是有纹理的,则根据其纹理特征来跟踪效果会有所改...原创 2018-10-26 11:33:54 · 2876 阅读 · 3 评论 -
cv2求解迷宫
本篇博客主要使用cv2来求解迷宫。下面是示例代码:# encoding:utf-8import cv2import numpy as npimg = cv2.imread('SampleImages/1.png')cv2.imshow('maze', img)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret, thresh =...原创 2018-08-10 11:42:57 · 511 阅读 · 0 评论 -
cv2高动态范围成像(HDRI、HDR)
本篇博客主要介绍高动态范围成像(HDRI、HDR)。高动态范围成像是一种用于成像和摄影的技术,可以重现比标准数字成像或摄影技术更大的动态光度范围。虽然人眼可以调整到广泛的光线条件,但大多数成像设备每通道使用8位,因此仅限于256级。当我们拍摄现实世界的场景时,明亮的地区可能曝光过度,而黑暗的区域可能曝光不足,所以我们无法使用单次曝光拍摄所有的细节。HDR图像与每通道使用超过8位(通常为32位...原创 2018-07-27 19:55:01 · 3024 阅读 · 3 评论 -
cv2图像修补inpaint
本篇博客主要介绍cv2模块中的图像修补inpaint。cv2中主要提供了两种进行图像修补的算法:1、基于快速行进算法 cv2.INPAINT_TELEA。2、基于流体动力学并使用了偏微分方程 cv2.INPAINT_NS。代码:import cv2img = cv2.imread('../data/messi_2.jpg')mask = cv2.imread('../d...原创 2018-07-27 19:07:24 · 6474 阅读 · 3 评论 -
cv2级联分类器CascadeClassifier
目录一、相关介绍二、示例代码和结果2.1 示例代码2.2 运行结果三、配置文件本篇博客主要介绍cv2中的级联分类器CascadeClassifier。一、相关介绍CascadeClassifier,是Opencv中做人脸检测的时候的一个级联分类器,既可以使用Haar,也可以使用LBP特征。以Haar特征分类器为基础的对象检测技术是一种非常有效的对象检测技术。它是...原创 2018-07-27 18:46:55 · 18840 阅读 · 0 评论 -
cv2 ORB
本篇博客主要介绍cv2中ORB模块。ORB是FAST关键点检测和BRIEF关键点描述器的结合体,并做了很多修改增强了性能。首先他使用FAST找到关键点,然后在使用Harris关键点检测对这些关键点做排序找到前N个点,他也是用金字塔从而产生尺度不变性特征。对于描述符,ORB使用BRIEF描述符,但是BRIEF在旋转方面表现不佳,因此ORB所做的是根据关键点的方向来做引导,对于在未知(xi,yi)...原创 2018-07-22 22:51:46 · 1840 阅读 · 0 评论 -
cv2机器学习-K均值聚类(KMeans)
本篇博客主要介绍cv2模块机器学习部分中的K均值聚类(KMeans)。cv2.kmeans(data, K, bestLabels, criteria, attempts, flags, centers=None)输入参数:data:np.float32类型的数据,每个特征应该放在一列。K:聚类的最终数目。bestLabels:预设的分类标签,没有的话就设置为None。cr...原创 2018-07-27 16:35:02 · 9145 阅读 · 3 评论 -
cv2 BRIEF特征描述符
本篇博客主要介绍cv2中中的BRIEF特征描述符。首先解决cv2中找不到 cv2.xfeature2d 的问题。在 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 找到下载所需版本,复制到python安装目录下的Lib\site-packages目录,然后在cmd中cd到Lib\site-packages目录,运行pip install ...原创 2018-07-22 22:33:57 · 728 阅读 · 0 评论 -
cv2 ConvexHull(凸包)
通过cv2中函数convexHull能很容易的得到一系列点的凸包,比如由点组成的轮廓,通过convexHull函数,我们就能得到轮廓的凸包。下面是对地图进行凸包检测示例代码:import cv2import numpy as npimport sys# 读取图片img = cv2.imread('./sample.jpg', 1)# 将图片转换到灰度空间gr...原创 2018-12-14 13:45:06 · 8558 阅读 · 0 评论 -
cv2伪彩色applyColorMap()函数
本文主要介绍cv2模块中的伪彩色applyColorMap()函数。引用自:https://blog.csdn.net/u013381011/article/details/78341861colormap(色度图)假设我们想在地图上显示美国不同地区的温度。我们可以把美国地图上的温度数据叠加为灰度图像——较暗的区域代表较冷的温度,更明亮的区域代表较热的区域。这样的表现不仅令人难以置信,...原创 2018-12-09 14:19:39 · 5833 阅读 · 0 评论 -
cv2使用EigenFace重建脸部
本文主要介绍使用Eigen Face重建脸部。代码:1、createPCAModel.pyimport os import sysimport cv2import numpy as np# 从图像列表中创建数据矩阵def createDataMatrix(images): print('Creating data matrix', end='...', flush...原创 2019-03-04 15:43:55 · 1118 阅读 · 0 评论 -
cv2调用YOLO实现目标检测
本文主要介绍基于cv2模块,调用YOLO目标检测算法,实现目标检测。YOLO的全称是You Only Look Once,它是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。下载相关文件:类名文件:https://github.com/pjreddie/darknet/blob/master/data/coco.names?raw=true ...原创 2019-03-03 15:32:51 · 1996 阅读 · 0 评论 -
cv2 Mask-RCNN——实例分割框架
Mask R-CNN 是一个两阶段的框架,第一个阶段扫描图像并生成提议(proposals,即有可能包含一个目标的区域),第二阶段分类提议并生成边界框和掩码。Mask R-CNN 扩展自 Faster R-CNN,由同一作者在去年提出。Faster R-CNN 是一个流行的目标检测框架,Mask R-CNN 将其扩展为实例分割框架。下载权值文件:http://download.tenso...原创 2019-03-02 18:01:22 · 1020 阅读 · 0 评论 -
cv2多目标追踪
本文主要介绍通过cv2的MultiTracker_create()方法创建几种不同的跟踪器,用于实现多目标跟踪, 并给出跟踪效果。代码:import sysimport cv2from random import randinttrackerTypes = ['BOOSTING', 'MIL', 'KCF','TLD', 'MEDIANFLOW', 'GOTURN', 'MOSS...原创 2019-02-27 20:19:51 · 4728 阅读 · 2 评论 -
cv2 手势识别
本文主要介绍通过opencv-python进行手势识别。下载模型权值文件:http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel下载proto file:https://download.csdn.net/download/github_39611196/10979308...原创 2019-02-27 17:23:28 · 1166 阅读 · 0 评论 -
OCR实现文字识别
本文主要介绍如何实现OCR。首先需要安装三个库:Tesseract library (libtesseract) Command line Tesseract tool (tesseract-ocr) Python wrapper for tesseract (pytesseract)安装步骤:sudo add-apt-repository ppa:alex-p/tessera...原创 2019-01-09 15:06:36 · 1614 阅读 · 1 评论 -
cv2 exposureFusion(曝光融合)
本文主要介绍cv2中的exposureFusion(曝光融合)。示例代码:import cv2import numpy as npimport sysfilenames = ['./images/memorial0061.jpg', './images/memorial0062.jpg', './images/memorial006...原创 2018-12-25 13:15:35 · 1858 阅读 · 2 评论 -
cv2 faceMorph(面部合成)
本文主要介绍使用cv2实现人脸面部合成。下面是示例代码:import numpy as npimport cv2# 从文本文件中读取点def readPoints(file): # 创建数组存储点 points = [] with open(file) as file: for line in file: x, y ...原创 2019-01-03 21:37:27 · 3165 阅读 · 1 评论 -
cv2 EigenFace(特征脸)
本文主要介绍cv2模块中EigenFace(特征脸),EigenFace可用来实现人脸识别。参考自:https://blog.csdn.net/loveliuzz/article/details/73810334cv2中face子模块目前支持的算法有:(1)主成分分析(PCA)——Eigenfaces(特征脸)——函数:cv2.face.EigenFaceRecogn...原创 2018-12-20 14:17:07 · 3523 阅读 · 0 评论 -
cv2 实现人脸检测
目录(1)dlib-hog(2)dlib-mmod(3)opencv-dnn(4)opencv-haar本文主要介绍使用python中cv2模块的多种方法来实现人脸检测。其中,windows中dlib模块的安装可参考我另一篇博客:python 3.x 安装dlib(windows环境)(1)dlib-hog代码:import cv2import dlibi...原创 2018-12-28 17:28:13 · 2343 阅读 · 1 评论 -
cv2 实现Delaunay三角剖分和Voronoi图(Delaunay Triangulation and Voronoi Diagram)
本文主要介绍使用cv2模块实现Delaunay三角剖分和Voronoi图。测试图片:示例代码:# 导入模块import cv2import numpy as npimport random# 检查点是否在长方形区域内def rect_contains(rect, point): if point[0] < rect[0]: return ...原创 2018-12-17 11:18:08 · 1805 阅读 · 1 评论 -
cv2颜色空间(2)——交互式的颜色检测
本文主要实现通过cv2只能够的鼠标事件实现图片中的颜色检测。下面是示例代码:import cv2import globimport numpy as np# 鼠标回调函数def showPixelValue(event, x, y, flags, param): global img, combinedResult, placeholder if ev...原创 2018-12-10 14:23:44 · 1925 阅读 · 0 评论 -
cv2颜色空间(1)
本文主要介绍opencv-python中的颜色空间。下面是示例代码:# 导入需要用到的模块import matplotlib.pyplot as pltfrom matplotlib.colors import LogNormimport cv2, globimport numpy as np# 指定要绘制的直方图的颜色color = 'pieces/yellow'# 指...原创 2018-12-10 13:58:22 · 1651 阅读 · 0 评论 -
cv2 计算average face
本文主要介绍使用cv2计算 average face。下面是计算USA总统average face示例代码:import osimport cv2import numpy as npimport mathimport sys# 从目录下读取文本文件def readPoints(path): # 创建一个数组用于存储点数组 pointsArray = [] ...原创 2018-12-26 15:20:08 · 723 阅读 · 0 评论 -
cv2角点检测的快速算法
本篇博客主要介绍cv2模块中的角点检测的快速算法。下面是示例代码:# encoding:utf-8'''SIFT效果很好,但是从实时处理的角度来看,这些算法的效果不是很好一个很好的例子就是SLAM(同步定位与地图构建)因此需要使用到快速特征检测器'''import numpy as npimport cv2import matplotlib.pyplot as plt...原创 2018-07-22 21:30:11 · 1497 阅读 · 0 评论 -
cv2 surf
本篇博客主要介绍cv2模块中的surf,即加速版的SIFT。示例代码:# encoding:utf-8import cv2import matplotlib.pyplot as pltimg = cv2.imread('../data/butterfly.jpg', 0)surf = cv2.xfeatures2d.SURF_create(400)kp, des = sur...原创 2018-07-21 13:10:42 · 2234 阅读 · 0 评论 -
cv2 SIFT尺度不变特征变换
本篇博客主要介绍cv2中的SIFT(尺度不变特征变换)。下面是示例代码:# encoding:utf-8import cv2img = cv2.imread('../data/home.jpg')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)sift = cv2.xfeatures2d.SIFT_create()kp = sift....原创 2018-07-21 13:02:04 · 901 阅读 · 0 评论 -
cv2背景减除
本篇博客主要介绍cv2模块中的背景减除。在很多基础应用中背景减除是一个非常重要的步骤。例如顾客统计使用一个摄像头来记录进入和离开房间的人数或者交通摄像头提取交通工具的信息等。在所有的这些例子中需要先将人或交通工具单独提取出来,因此每一个像素点所在的位置在整个时间序列中就会有很多值,从而构建一个时间序列。(1)、cv2.bgsegm.createBackgroundSubtractorMOG...原创 2018-07-23 13:49:59 · 1906 阅读 · 0 评论 -
cv2光流法
本篇博客主要介绍cv2模块中光流法,cv2.calcOpticalFlowPyrLK()。由于目标对象或者摄像机的移动造成的图像对象在连续两帧图像中的移动成为光流。它是一个2D向量场,可以用来显示一个点从第一帧图像到第二帧图像的移动。光流法的应用领域:(1)、由运动重建结构(2)、视频压缩(3)、Video Stabilization示例代码:import num...原创 2018-07-23 13:30:12 · 2923 阅读 · 1 评论 -
cv2实现视频跟踪
本篇博客主要介绍cv2中的视频分析Camshift和Meanshift。首先是Meanshift,Meanshift算法的基本原理是和很简单的。假设我们有一堆点,和一个小的圆形窗口,Meanshift 算法就是不断移动小圆形窗口,直到找到圆形区域内最大灰度密度处为止。示例代码:# encoding:utf-8import cv2import numpy as npcap =...原创 2018-07-23 12:05:41 · 1713 阅读 · 1 评论 -
cv2特征匹配
本篇博客主要介绍cv2模块中的特征匹配findHomography。在图像处理中,联合使用特征提取和calib3d模块中的 findHomography,可以实现在复杂图像中查找已知对象。示例代码:# encoding:utf-8import numpy as npimport cv2import matplotlib.pyplot as pltmin_match_count ...原创 2018-07-23 11:27:38 · 3439 阅读 · 0 评论 -
cv2批量修改图片大小
目录一、介绍二、使用说明一、介绍最近做项目的过程中,需要将几百张图片修改为固定的大小,手动修改图片大小特别耗时且低效,因此使用Python的cv2模块写了一个批量修改的代码:import cv2i = 1nums = 1000while i < nums: # 读取图片 img = cv2.imread(".\\uav\\" + str(i) +...原创 2019-12-20 14:35:29 · 1952 阅读 · 0 评论 -
cv2做hough直线检测
本篇博客主要介绍使用python中的cv2模块做hough直线检测。示例代码:import cv2import numpy as npcap = cv2.VideoCapture(0)while cap.isOpened(): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GR...原创 2018-07-17 11:30:17 · 2501 阅读 · 0 评论 -
cv2模板匹配
本篇博客主要介绍使用python中cv2模板的模板匹配方法,实现在大图中查看模板图像位置,所使用的方法为cv2.matchTemplate(),和2D卷积一样,它也是用模板图像在输入图像大图上滑动,并在每一个位置对模板图像和输入图像的子区域进行比较。OpenCV提供了几种不同的比较方法,返回结果是一个灰度图像,每一个像素值显示了此区域与模板的匹配程度,如果输入图像的大小是WxH,模板的大小时w...原创 2018-07-17 10:53:57 · 3287 阅读 · 0 评论 -
cv2把鼠标当画笔
本篇博客主要介绍通过pyhon中的cv2模块实现将鼠标当做画笔。下面是示例代码:import cv2import numpy as npdrawing = Falseix, iy = -1, -1def draw_circle(event, x, y, flags, param): global ix, iy, drawing, mode if even...原创 2018-07-08 13:55:42 · 627 阅读 · 0 评论