![](https://img-blog.csdnimg.cn/20210401222836152.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenCV-数字图像处理
文章平均质量分 52
学习并分享数字图像处理的知识
weixin_43170082
这个作者很懒,什么都没留下…
展开
-
Opencv学习笔记(三十二)Hog+SVM分类器进行行人检测
import cv2def is_inside(o, i): ox,oy,ow,oh = o ix, iy, iw, ih =i return ox > ix and oy > iy and ox + ow < ix + iw and oy +oh <iy +ihdef draw_person(image, person): x, y, w, h = person cv2.rectangle(image, (x, y), (x + w,原创 2021-04-29 22:10:41 · 235 阅读 · 0 评论 -
Opencv学习笔记(三十一)图像前景提取GrabCut 算法
import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread(r'F:\OPENCV\Opencv\animal.png')# 创建掩膜mask = np.zeros(img.shape[:2], np.uint8)bgdModel = np.zeros((1, 65), np.float64)fgdModel = np.zeros((1, 65), np.float64)rect = (4原创 2021-04-28 22:37:56 · 194 阅读 · 0 评论 -
Opencv学习笔记(二十九)图像特征提取
(一)HOG特征 from:http://dataunion.org/20584.html 1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合 SVM分类器已经被广泛应用于图像识别中,尤其在行人检...转载 2021-04-27 22:41:04 · 2681 阅读 · 0 评论 -
Opencv学习笔记(二十八)图像基础运算操作
文章目录图像加法、混合、位运算代码图像加法、混合、位运算图像加法运算,opencv采用cv2.add(), numpy采用算术符号’+'操作。两者的区别在于opencv是饱和操作,numpy是取模操作。饱和操作是大于255的像素截断为255,取模操作是大于255的像素对256取模。import cv2import numpy as npx = np.uint8([245])y = np.uint8([20])print (x + y) # [9]a = cv2.add(x, y)pr原创 2021-04-26 22:25:14 · 138 阅读 · 0 评论 -
Opencv学习笔记(二十七)Haar人脸检测
文章目录Haar级联代码参考文献Haar级联对给定的图像, 特征可能会因区域大小而有所不同, 区域大小也可被称为窗口大小 (window size)。 即使窗口大小不一样, 仅在尺度上不同的两幅图像也应该有相似的特征。 因 此, 能为不同大小的窗口生成特征非常有用。 这些特征集合称为级联。 Haar级联具有尺度不变性, 换句话说, 它在尺度变化上具有鲁棒性。 OpenCV提供了尺度不变Haar级联的分类器和跟踪器, 并可将其保存成指定的文件格式。OpenCV的 Haar级联不具有旋转不变性。 例如,原创 2021-04-25 22:04:59 · 920 阅读 · 1 评论 -
Opencv学习笔记(二十六)文本检测mser+非极大值抑制nms
文章目录mser检测nms非极大值抑制代码mser检测nms非极大值抑制代码import cv2import matplotlib.pyplot as pltimport numpy as np# NMS 方法(Non Maximum Suppression,非极大值抑制)def nms(boxes, overlapThresh): if len(boxes) == 0: return [] if boxes.dtype.kind == "i":原创 2021-04-24 22:16:12 · 721 阅读 · 0 评论 -
Opencv学习笔记(二十四)FAST角点检测
文章目录FAST代码FAST代码import cv2src = cv2.imread(r'F:\OPENCV\Opencv\animal.png')gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)# initial FAST object with default valuesfast = cv2.FastFeatureDetector_create()# find and draw object with default valueskp = f原创 2021-04-22 21:37:48 · 317 阅读 · 0 评论 -
Opencv学习笔记(二十三)Shi-Tomas角点检测
文章目录Shi-Tomas角点检测代码Shi-Tomas角点检测cv2. goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance)image 为灰度图maxCorners为最好的角点个数, qualitylevel为角点的质量水平,在0~1之间,低于该值的角点被舍弃。minDistance为两个角点之间的最短欧式距离代码import cv2import numpy as npsrc = cv2.imread(r'F原创 2021-04-21 20:15:12 · 226 阅读 · 0 评论 -
Opencv学习笔记(二十二)Harris角点检测
图像特征特征就是图像的重要区域, 该区域具有独特性且易于识别。特征检测就是找到图像的重要区域, 特征检测算法一般会涉及图像的角点、边和斑点。角点检测角点的特性:向任何方向的移动变化都很大。harris检测cv2.cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None)src: single channel 8 bit or floating point img,blockSize: 角点检测中要考虑的领域大小ksiz原创 2021-04-20 22:48:56 · 116 阅读 · 0 评论 -
Opencv学习笔记(二十一)分水岭算法
文章目录分水岭算法代码分水岭算法假设一副灰度图像看作是地势图,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。开始向山谷中注入水,随着水位的升高,不同的山谷中的水将要汇聚,为了防止不同山谷的水汇合,我们需要在水汇合的区域构建堤坝。不停的灌水,不停的构建堤坝直至所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。代码# 分水岭算法import cv2import numpy as npfrom matplotlib import pyplot as pltsrc = cv原创 2021-04-20 22:20:29 · 137 阅读 · 0 评论 -
Opencv学习笔记(二十)傅里叶变换、逆变换
文章目录傅里叶变换代码傅里叶变换傅里叶变换用来分析图像的频率特性。代码import cv2import numpy as npfrom matplotlib import pyplot as pltsrc = cv2.imread(r'F:\OPENCV\Opencv\animal.png')gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)# 图像扩展h, w = gray.shape# cv2.getOptimalDFTSize函数返回给定原创 2021-04-19 21:48:34 · 449 阅读 · 0 评论 -
Opencv学习笔记(十九)霍夫圆检测
文章目录霍夫圆检测代码霍夫圆检测cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius, maxRadius)image: 输入图像(二值图像或减员检测后的图像)method: 检测方法minDist: 检测到圆心之间的最小距离circles: 返回结果 (x,y,r)param1: canny边缘函数的高阈值param2: 圆心检测阈值minRadius: 能检测到的最小圆半径maxRadius: 能原创 2021-04-18 23:07:49 · 241 阅读 · 0 评论 -
Opencv学习笔记(十八)霍夫直线检测
文章目录霍夫变换代码霍夫变换霍夫变换检测直线**cv2.HoughLines()**第一个参数image为二值化图像或者进行Canny 边缘检测后的图像;第二个参数rho和第三个参数theta:对应直线搜索的步长半径和角度;第四个参数是阈值,高于阈值时才被认为是一条直线。 返回值为直线到远点的**cv2.HoughLinesP()**前四个参数等同于cv.2HoughLines();第五个参数为minLineLength - 线的最短长度。比这个短的线都会被忽略。第六个参数:MaxLineGap原创 2021-04-17 23:00:35 · 451 阅读 · 2 评论 -
Opencv学习笔记(十七)鼠标画笔
文章目录代码1代码2鼠标调用函数:cv2.setMouseCallback()代码1import cv2import numpy as np# 查看鼠标事件# events = [i for i in dir(cv2) if 'EVENT' in i]# print(events)#创建回调函数def draw_circle(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDBLCLK: cv2.c原创 2021-04-16 22:12:50 · 118 阅读 · 0 评论 -
Opencv学习笔记(十六)多对象模板匹配
文章目录多对象模板匹配多对象模板匹配import cv2import numpy as npfrom matplotlib import pyplot as pltsrc = cv2.imread(r'F:\OPENCV\Opencv\mario.jfif', cv2.IMREAD_COLOR)img = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)template = cv2.imread(r'F:\OPENCV\Opencv\mario1.jfif', cv2原创 2021-04-15 23:23:56 · 366 阅读 · 0 评论 -
Opencv学习笔记(十五)模板匹配
文章目录模板匹配代码模板匹配模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。cv2.matchTemplate() 输入为灰度化的大图(W, H)、模板图像(w,h)、匹配方法。用模板图像在输入图像(大图)上滑动,并在每一个位置对模板图像和与其对应的输入图像的子区域进行比较。返回(W-w+1, H-h+1)的浮点型的灰度图,灰度图中的灰度值表示此区域于模板的匹配程度,值越大越匹配。匹配方法cv2.minMaxLoc() 输入为矩阵[cv2.matchTemplate()的返回结果],返回原创 2021-04-15 22:37:09 · 220 阅读 · 0 评论 -
Opencv学习笔记(十四)图像金字塔
文章目录图像金字塔代码图像金字塔图像金字塔:高斯金字塔和拉普拉斯金字塔。高斯金字塔:在进行高斯卷积之后,删除图像的偶数行和偶数列,因此一个MxN 的图像就变成了一个M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。我们可以使用函数cv2.pyrDown() 和cv2.pyrUp() 构建图像金字塔。函数cv2.pyrDown() 从一个高分辨率大尺寸的图像向上构建一个金子塔(尺寸变小,分辨率降低)。函数cv2原创 2021-04-14 22:15:15 · 177 阅读 · 0 评论 -
Opencv学习笔记(十三)图像通道拆分、合并、边界填充
文章目录代码图像通道拆分是将BGR拆分为三个独立的单通道。通道合并是将独立的单通道合并为BGR图像。边界填充是是对图像的四周以不同的方式进行扩充。代码import cv2import numpy as npfrom matplotlib import pyplot as pltsrc = cv2.imread(r'F:\OPENCV\Opencv\lenna.jpg', cv2.IMREAD_COLOR)if src is None: print('image is empty')原创 2021-04-13 21:58:47 · 196 阅读 · 0 评论 -
Opencv学习笔记(十二)图像几何变换
文章目录代码图像的几何变换包括图像缩放、平移、旋转、仿射变换、透视变换。代码import cv2import numpy as npfrom matplotlib import pyplot as pltsrc1 = cv2.imread(r'F:\OPENCV\Opencv\flower.jfif', cv2.IMREAD_COLOR)src2 = cv2.imread(r'F:\OPENCV\Opencv\test4.png', cv2.IMREAD_COLOR)src = cv2.c原创 2021-04-12 22:35:48 · 112 阅读 · 0 评论 -
Opencv学习笔记(十一)创建滑动条
文章目录滑动条创建函数代码滑动条可以动态的调节图像,是一个很方便的工具。滑动条创建函数cv2.createTrackbar(trackbarName, windowName, value, count, onChange)trackbarName:滑动条名称windowName:所在窗口名value:初始值count:最大值onChange:回调函数名称cv2.getTrackbar(trackbarname, winname)trackbarname:滑动条名称winname:所在窗原创 2021-04-12 00:00:39 · 77 阅读 · 0 评论 -
Opencv学习笔记(十)轮廓特征、轮廓近似
文章目录代码参考轮廓特征包括面积、周长、重心、边界框的等。轮廓近似和凸包可以检测曲线是否具有凸性缺陷。凸性曲线是凸出来的曲线,如果某些部分凹进去作为凸性缺陷。代码import cv2from matplotlib import pyplot as pltsrc = cv2.imread(r'F:\OPENCV\Opencv\test2.png', cv2.IMREAD_COLOR)if src is None: print('image is null')gray = cv2.cv原创 2021-04-10 23:31:39 · 976 阅读 · 0 评论 -
Opencv学习笔记(九)OpenCV绘图
文章目录绘图函数代码绘图函数绘图函数 cv2.line(), cv2.rectangle(), cv2.circle(), cv2.ellipse(), cv2.putText()绘图函数需要的参数为 img:画布图像,color:绘制的色彩, thickness:线条的粗细(-1表示闭合曲线的填充),lineType:线条类型(默认8连接)。代码import cv2import numpy as npimg = np.ones((500, 500, 3), np.uint8)img =原创 2021-04-10 22:50:57 · 255 阅读 · 2 评论 -
Opencv学习笔记(八)轮廓检测
文章目录轮廓检测API详解代码参考轮廓检测轮廓是具有相同色彩或者灰度的曲线,在形状分析和物体检测中具有很重要的作用。API详解cv2.findContours()cv2.findContours() 函数查找轮廓,:第一个参数为输入图像;第二个参数为轮廓的检索模式,cv2.RETR_TREE会得到图像中轮廓的整体层次结构,建立轮廓之间的关系;cv2.RETR_EXTERNAL得到最外面的轮廓,消除轮廓之内的轮廓。第三个是轮廓的近似方法,cv2.CHAIN_APPROX_NONE存储边界上的所有原创 2021-04-08 22:37:30 · 350 阅读 · 0 评论 -
Opencv学习笔记(七)边缘检测
文章目录原创 2021-04-08 20:08:16 · 1152 阅读 · 0 评论 -
Opencv学习笔记(六)图像形态学处理
文章目录形态学变换主要操作代码参考形态学变换形态学处理主要应用于二值图像,目的是微调分割区域的形状,获得比较理想的目标图像。腐蚀和膨胀是形态学处理的基础操作,其他操作包括:开运算、闭运算、顶帽,黑帽。主要操作腐蚀:把前景物体的边界向内缩小。cv2.erode():第一个参数为图像;第二个是结构元;第三个参数为锚点,默认为结构元的中心点;第四个参数为迭代次数。膨胀:把前景物体的边界向外扩张。cv2.dilate():第一个参数为图像;第二个是结构元;第三个参数为锚点,默认为结构元的中心点;第四个原创 2021-04-07 22:18:07 · 898 阅读 · 2 评论 -
Opencv学习笔记(五)图像阈值化
文章目录阈值分割技术图像阈值分割是根据图像灰度值信息提取前景。它是将小于阈值的像素赋予一个新值,大于阈值的像素赋予另一个新值。阈值分割技术1.固定阈值化:一副图像使用一个阈值。cv2.threshold(),有两个返回值,第一个为retVal,第二个为阈值化结果图像。第一个参数是原始图像,第二个参数是设定的阈值,第三个参数是当像素值大于设定的阈值时被赋予的新值,它由第四个参数决定。第四个参数opencv给定的阈值赋值方法。2.自适应阈值化:阈值由图像不同的区域计算得到,所以一副图像上的不同区域使用原创 2021-04-06 21:24:50 · 305 阅读 · 0 评论 -
Opencv学习笔记(四)图像滤波
文章目录滤波技术代码图像滤波的目的是抑制图像中的噪声。滤波技术图像滤波技术1.均值滤波:将滤波窗口内的所有像素值求和,取得平均值作为中心像素的值。2.中值滤波:将滤波窗口(含有奇数个点)内的像素值按照从小到大的顺序排列,取得中值作为中心像素的值。它可以有效的抑制椒盐噪声。3.高斯滤波:将滤波窗口内的像素值进行高斯加权求和,求得的值作为中心像素的值。高斯滤波只能去除高斯噪声cv2.GaussianBlur():需要指定X 、Y方向的标准差,如果只指定X方向,Y方向也取相同的值。如果两个方向的标准原创 2021-04-04 22:15:53 · 117 阅读 · 0 评论 -
Opencv学习笔记(三)图像灰度化、灰度直方图、直方图均衡化
文章目录图像灰度化灰度直方图直方图均衡化代码图像灰度化图像灰度化是将彩色图像转换为灰度图像。OpenCV中使用cv2.cvtColor()函数进行色彩空间转换,第一个参数为图像,第二个参数为转换类型,RGB图像转灰度图像的类型为cv2.COLOR_BGR2GRAY。灰度直方图直方图是图像的另一种表示方法,它反映了图像的灰度分布。cv2.calcHist(images, channels, mask, histSize,rangs[, hist,[,accumulate]])函数统计一副图像的直方图原创 2021-04-03 23:36:27 · 909 阅读 · 2 评论 -
Opencv学习笔记(二)数字图像属性和像素操作
数字图像简介数字图像:由像素组成,图像的信息是离散信号。任意一副数字图像中的每个像素都具有特定的位置和幅值(像素),位置和幅值(像素)决定了图像的样貌。数字图像包含RGB图像和灰度图像两类。RGB图像包含R 、G、B三个通道;灰度图只有一个通道,为 单通道图像。图像基础操作数字图像包含:行、列、通据类型和像素数目等属性。img.shape:返回图像的行、列、通道个数,彩色图像通道数为3,灰度图像通道数为1;img.dtype :返回图像数据类型;img.size:返回图像像素数目。图像像素原创 2021-04-02 20:57:57 · 534 阅读 · 2 评论 -
Opencv学习笔记(一)数字图像的读取、显示、存储操作
文章目录数字图像的读取、显示、存储操作图像读取图像显示图像保存代码示例参考文献数字图像的读取、显示、存储操作Opencv支持BMP、PNG、JPEG、TIFF格式的静态图像文件格式。图像读取cv2.imread()函数读取图像,该函数包含两个参数。第一个参数为需要读取的图像文件名 ,windows下路径使用斜杠‘/’,Unix下使用反斜杠‘\’。第二个参数为怎样读取图像, cv2.IMREAD_GRAYSCALE =0:读入灰度图像;cv2.IMREAD_COLOR=1(函数默认) :读入彩色原创 2021-04-01 22:26:17 · 545 阅读 · 2 评论