![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机视觉基础
FUXI_Willard
自律、专注、坚持、追梦、自信。
展开
-
计算机视觉基础教程笔记索引
计算机视觉基础教程笔记已完结,本篇是该系列博客索引。计算机视觉基础1—图像处理基础之Numpy基础.计算机视觉基础2—图像和视频基本操作1.计算机视觉基础3—图像和视频基本操作2.计算机视觉基础4—图像运算.计算机视觉基础5—窗口控制和绘图.计算机视觉基础6—响应鼠标事件和使用跟踪栏.计算机视觉基础7—色彩空间变换.计算机视觉基础8—几何变换.计算机视觉基础9—图像模糊.计算机视觉基础10—阈值处理.计算机视觉基础11—形态变换.计算机视觉基础12—边缘检测.计算机视觉基础13原创 2022-04-27 19:51:23 · 3776 阅读 · 0 评论 -
计算机视觉基础25---人脸检测和人脸识别
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.人脸检测# 人脸检测:在图像中完成人脸定位的过程;# 人脸识别:在人脸检测的基础上进一步判断人的身份;# 1.基于Haar的人脸检测# 在haarcascades文件夹中包含训练好的Haar级联分类器文件;# a.haarcascade_eye.xml:人眼检测;# b.haarcascade_eye_tree_eyeglasses.xml:眼镜检测;# c.haarcascade_原创 2022-04-28 00:00:00 · 4548 阅读 · 1 评论 -
计算机视觉基础24---对象查找
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 对象查找:经过特征匹配后,可找到查询图像在训练图像中的最佳匹配,从而可在训练图像中精确查找到查询图像;# 获得最佳匹配结果后,调用cv2.findHomography()函数执行查询图像和训练图像的透视变换,# 再调用cv2.perspectiveTransform()函数执行向量的透视矩阵转换,可获得查询图像在训练图像中的位置;# 1.cv2.findHomography()函数# 语法原创 2022-04-28 00:00:00 · 172 阅读 · 0 评论 -
计算机视觉基础23---特征匹配
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 特征匹配:获得图像特征点后,通过计算得到关键点的描述符,关键点描述符可用于图像的特征匹配;# 在计算图A是否包含图B的特征区域时,将图A称为训练图像,将图B称为查询图像;# 图像A的关键点描述符称为训练描述符,图像B的关键点描述符称为查询描述符;# 1.暴力匹配器# 暴力匹配器使用描述符进行特征比较,在比较时,暴力匹配器先在查询描述符中提取一个关键点的描述符,# 将其与训练描述符中的所有原创 2022-04-28 00:00:00 · 555 阅读 · 0 评论 -
计算机视觉基础22---特征点检测
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 特征点:图像中具有唯一性的像素,称为兴趣点或关键点,角是特殊的特征点;# 1.FAST特征检测# FAST特征检测:根据像素周围16个像素的强度和阈值等参数来判断像素是否为关键点;# 通过cv2.FastFeatureDetector_create()函数创建一个FAST对象;# 通过调用FAST对象的detect()方法执行关键点检测,该方法返回一个关键点列表;# 每个关键点对象包含关原创 2022-04-28 00:00:00 · 431 阅读 · 0 评论 -
计算机视觉基础21---角检测
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 图像的特征:图像中具有独特性和易于识别性的区域,如:角、边缘;# 角检测:# 角是两条边的交点,可称为角点或拐角,是图像中各个方向上强度变化最大的区域;# 1.哈里斯角检测# 语法格式:dst = cv2.cornerHarris(src, blockSize, ksize, k)# 参数说明:# a.dst:返回结果,一个numpy.ndarray对象,大小和src相同,每一个数组原创 2022-04-26 13:22:51 · 1276 阅读 · 0 评论 -
计算机视觉基础20---交互前景提取
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 交互式前景提取基本原理:# 1.用一个矩形指定要提取的前景所在的大致范围;# 2.执行前景提取算法,得到初步结果;# 3.初步结果包含的前景可能不理想,存在前景未提取完整或背景被处理为前景等问题;# 4.此时,人工干预(交互),用户需要复制原图像作为掩模图像,在其中用白色标注要提取的前景区域,# 用黑色标注背景区域,标注不需要很精确;# 5.使用掩模图像执行前景提取算法,获得理想的提取结原创 2022-04-27 00:00:00 · 529 阅读 · 0 评论 -
计算机视觉基础19---图像分割
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 1.分水岭算法分割图像# 分水岭算法基本原理:# 将任意的灰度图像视为地形图表面,其中灰度值高的部分表示山峰和丘陵,灰度值低的部分表示山谷;# 用不同颜色的水(标签)填充每个独立的山谷(局部最小值);随着水平面的上升,# 来自不同山谷(具有不同颜色)的水将开始合并;为了避免出现这种情况,# 需要在水的汇合位置建造水坝;持续填充水和建造水坝,直到所有山峰和丘陵都在水下;# 使用分水岭算法原创 2022-04-27 00:00:00 · 370 阅读 · 0 评论 -
计算机视觉基础18---模板匹配
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 模板匹配:在当前图像中查找与目标图像最相近的部分;# 图像分割:将前景对象从图像中分割或提取出来;# 模板匹配:让模板图像在输入图像中滑动,逐像素遍历整个图像进行比较,查找与模板图像最匹配的部分;# 1.单目标匹配:输入图像中只存在一个可能匹配结果;# 语法格式:result = cv2.matchTemplate(image, templ, method)# 参数说明:# a.i原创 2022-04-26 00:00:00 · 3787 阅读 · 0 评论 -
计算机视觉基础17---二维直方图
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 一维直方图:只统计像素的灰度值一个特征;# 二维直方图:统计像素的色相和饱和度,用于查找图像的颜色直方图;# 1.OpenCV的二维直方图# 语法格式:hist = cv2.calcHist(image, channels, mask, histSize, ranges)# 参数说明:# a.hist:返回的直方图;# b.image:指定的原图从BGR色彩空间转换为HSV色彩空间,实原创 2022-04-26 00:00:00 · 1477 阅读 · 0 评论 -
计算机视觉基础16---直方图均衡化
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 1.普通直方图均衡化# 普通直方图均衡化:将原图像的灰度级均匀地映射到全部灰度级范围内;# 语法格式:dst = cv2.equalizeHist(src)# 参数说明:# a.dst:直方图均衡化后的图像;# b.src:原图像,必须是8位单通道图像;import cv2 as cvimport matplotlib.pyplot as pltimg1 = cv.imread("原创 2022-04-26 00:00:00 · 1533 阅读 · 0 评论 -
计算机视觉基础15---直方图基础
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 直方图基础# 1.直方图用于统计图像内各个灰度级出现的次数;# 2.直方图横坐标表示图像像素的灰度级,纵坐标表示像素灰度级的数量;# 3.RANGE:要统计的灰度级范围;直方图中像素灰度级范围:[0, 255],0表示黑色,255表示白色;# 4.BINS:灰度级的分组数量;如:灰度图像的灰度级范围为[0, 255],将16个灰度级分为一组,可分为16个子集,则BINS为16;# 5.DI原创 2022-04-25 06:00:00 · 523 阅读 · 0 评论 -
计算机视觉基础14---霍夫变换
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 霍夫变换用于在图像中查找直线和圆等形状;# 1.霍夫直线变换# 语法格式:lines = cv2.HoughLines(image, rho, theta, threshold)# 参数说明:# a.lines:返回的直线;# b.image:原图像,必须是8位单通道二值图像;# c.rho:距离的精度,以像素为单位,通常为1;# d.theta:角度的精度,通常以Π/180°,表示搜原创 2022-04-25 00:00:00 · 661 阅读 · 0 评论 -
计算机视觉基础13---图像轮廓
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 图像轮廓:由位于边缘、连续的、具有相同颜色和强度的点构成的曲线;# 1.查找轮廓# 语法格式:image, contours, hierarchy = cv2.findContours(image, mode, method[, offset])# 参数说明:# a.contours:返回的轮廓;# b.hierarchy:返回的轮廓的层次结构;# c.image:原图像;# d.m原创 2022-04-25 00:00:00 · 979 阅读 · 0 评论 -
计算机视觉基础12---边缘检测
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 图像的边缘:图像中灰度值发生急剧变化的位置,边缘检测目的:为了绘制出边缘线条;# 图像边缘通常是不连续的,不能表示整体;# 图像轮廓:将边缘连接起来形成的整体;# 边缘检测:检测结果通常为黑白图像,图像中白色线条表示边缘;# 常见边缘检测算法:Laplacian边缘检测、Sobel边缘检测、Canny边缘检测;# 1.Laplacian边缘检测# 拉普拉斯边缘检测:使用图像矩阵与拉普原创 2022-04-24 06:00:00 · 676 阅读 · 0 评论 -
计算机视觉基础11---形态变换
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 形态变换:用于二值图像的形状操作,形态变换实现原理基于数字形态学;# 数字形态学(形态学):主要是从图像内部提取信息来描述图像形态;# 数字形态学广泛应用于视觉检测、文字识别、医学图像处理、图像压缩编码等领域;# 形态变换主要包括:腐蚀、膨胀、高级形态操作;# 1.形态操作内核# 形态操作会使用一个内核遍历图像,根据内核和图像的位置关系决定内核中心对应的图像像素点的输出结果;# 语法格原创 2022-04-24 06:00:00 · 495 阅读 · 0 评论 -
计算机视觉基础10---阈值处理
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 1.全局阈值处理# 全局阈值处理:将大于阈值的像素值设置为255,将其他像素值设置为0;# 或将大于阈值的像素值设置为0,将其他像素值设置为255;# 语法格式:retval, dst = cv2.threshold(src, thresh, maxval, type)# 参数说明:# a.retval:返回的阈值;# b.dst:处理后的结果图像;# c.src:原图像;# d.t原创 2022-04-24 00:00:00 · 1567 阅读 · 0 评论 -
计算机视觉基础9---图像模糊
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。图像模糊处理概念图像模糊(图像平滑处理):处理图像中与周围差异较大的点,将其像素值调整为与周围点像素值近似的值;目的:消除图像噪声和边缘;均值滤波均值滤波:以当前点为中心,用其周围N×NN\times{N}N×N个点像素值的平均值代替当前点的像素值;用于计算平均值的N×NN\times{N}N×N个点称为邻域,用于滤波计算的卷积核大小与邻域相同;一个大小3×3的邻域为:[125129原创 2022-04-23 06:00:00 · 1088 阅读 · 0 评论 -
计算机视觉基础8---几何变换
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 1.缩放# 语法格式:dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])# 参数说明:# a.dst:转换后的图像;# b.src:用于缩放的原图像;# c.dsize:转换后图像大小;# d.fx:水平方向的缩放比例;# e.fy:垂直方向的缩放比例;# f.interpolation:插值方式;#原创 2022-04-22 06:00:00 · 381 阅读 · 0 评论 -
计算机视觉基础7---色彩空间变换
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 常见的色彩空间:RGB、GRAY、XYZ、YCrCb、HSV;# 转换色彩空间类型函数:cv2.cvtColor();# 语法格式:dst = cv2.cvtColor(src, code[, dstCn])# 参数说明:# 1.dst:转换后的图像;# 2.src:转换前原图像;# 3.code:色彩空间类型转换码;# 4.dstCn:目标图像的通道数;# 常见色彩空间类型转换码原创 2022-04-21 00:00:00 · 2004 阅读 · 0 评论 -
计算机视觉基础6---响应鼠标事件和使用跟踪栏
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.响应鼠标事件# 鼠标回调函数基本格式:def mouseCallback(event, x, y, flags, param): pass# 参数说明:# 1.mouseCallback:自定义函数名称;# 2.event:调用时传递给函数的鼠标事件对象;# 3.x、y为触发鼠标事件时,鼠标指针在窗口中的坐标(x, y);# 4.flags:触发鼠标事件时,鼠标拖动或键盘按原创 2022-04-21 00:00:00 · 387 阅读 · 0 评论 -
计算机视觉基础5---窗口控制和绘图
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.窗口控制cv2.namedWindow()创建窗口格式:cv2.namedWindow(winname[, flags]);winname:窗口名称;flags:表示窗口属性的常量;窗口属性:cv2.WINDOW_NORMAL:用户可以调整窗口大小,无限制;cv2.WINDOW_AUTOSIZE:默认值,用户无法调整窗口大小,窗口大小由显示的图像决定;cv2.WINDOW_FULL原创 2022-04-21 00:00:00 · 631 阅读 · 0 评论 -
计算机视觉基础4---图像运算
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.加法运算# 1.加法运算:加法运算符"+"和cv2.add()函数;# 加法运算符"+":如果两个像素相加大于256,则将其按256取模;# cv2.add()函数:如果两个像素相加大于256,则取255;import cv2 as cvimg1 = cv.imread("01.jpg")img2 = cv.imread("20.jpg")img3 = img1 + img2im原创 2022-04-20 00:15:00 · 1650 阅读 · 0 评论 -
计算机视觉基础3---图像和视频基本操作2
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.操作灰度图像# 计算机将灰度处理为256级(0-255),0表示黑色,255表示白色,用一个字节来存储一个像素的值;import cv2 as cvimport numpy as npimg = np.zeros((480, 680), dtype = np.uint8)n = 0while True: cv.imshow("GrayImg", img) n += 2原创 2022-04-20 00:00:00 · 1900 阅读 · 0 评论 -
计算机视觉基础2---图像和视频基本操作1
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.图像基本操作1.1 读取图像imread()函数格式:img = cv2.imread(filename, flag)filename:图像文件名;flag:图像读取格式标志;图像读取格式标志说明cv2.IMREAD_UNCHANGED按原样加载图像cv2.IMREAD_GRAYSCALE将图像转换为单通道灰度图像cv2.IMREAD_COLOR将图原创 2022-04-19 02:00:00 · 456 阅读 · 0 评论 -
计算机视觉基础1---图像处理基础之Numpy基础
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。1.创建数组import numpy as np# 1.使用array()函数创建数组list_one = [5, 8, 4, 5, 2, 0]tuple_one = ((5, 8, 4, 5, 2, 0))array_one = np.array(list_one)array_two = np.array(tuple_one)print("将列表转换为数组:", array_one原创 2022-04-18 05:00:00 · 317 阅读 · 0 评论