耐心的小黑
七月份就上班了,比较忙!
展开
-
opencv学习笔记二十四:cv2.adaptiveThreshold自适应阈值
之前我们说过使用全局阈值来对图像进行二值化,整幅图像采用同一个数作为阈值。但是这种方法并不适应与所有情况,尤其是当同一幅图像上的不同部分具有不同亮度时。这种情况下我们需要采用自适应阈值。此时的阈值是根据图像上的每一个小区域计算与其对应的阈值。因此在同一幅图像上的不同区域采用的是不同的阈值,从而使我们能在亮度不同的情况下得到更好的结果。dst = cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)src: 输入图,只原创 2020-07-22 10:20:04 · 5672 阅读 · 0 评论 -
opencv学习笔记二十三:cv2.resize函数详解
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 参数说明:src :需要改变尺寸的图像dsize:目标图像大小dst:目标图像fx:w方向上的缩放比例fy:h方向上的缩放比例interpolation - 插值方法。共有5种:value含义cv2.INTER_NEAR...原创 2020-03-30 21:04:26 · 13308 阅读 · 0 评论 -
opencv学习笔记二十二:图像叠加/图像融合/按位操作
一、图像叠加:cv2.add res=cv2.add(img1, img2) 或者res=cv2.add(img1, 标量值)参数说明: cv2.add将两个图片对应位置的像素的值相加,或者将每个像素的值加上一个标量值,大于255的像素值就设置成255。有一点需要注意的是,如果是两张图片相加,那么一定要注意两者的尺寸和通道数必须是一样的;如果是标量值,这个值既可以是整数也可以是浮点...原创 2020-03-30 11:56:11 · 3388 阅读 · 0 评论 -
opencv学习笔记二十一:使用HSV颜色空间实现颜色识别
一、颜色空间介绍 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成。然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色 调 Hue,饱和度 Saturation,亮度 Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角 锥体模型。&...原创 2020-03-29 20:19:02 · 6336 阅读 · 0 评论 -
opencv学习笔记二十:sift特征以及特征匹配
下面是两个转载的Link一、什么是sift特征?如何计算?二、利用sift特征进行特征匹配原创 2020-03-01 22:24:43 · 1039 阅读 · 0 评论 -
opencv学习笔记十九:Harris角点检测
cv2.cornerHarris()函数cv2.cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None)src:数据类型为 float32 的输入图像blockSize:角点检测中考虑的区域大小ksize:Sobel求导中使用的窗口大小k:Harris 角点检测方程中的自由参数,取值参数为 [0.04 0.06]...原创 2020-03-01 20:53:08 · 1114 阅读 · 0 评论 -
opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)
1、目标匹配函数:cv2.matchTemplate()res=cv2.matchTemplate(image, templ, method, result=None, mask=None)image:待搜索图像templ:模板图像result:匹配结果method:计算匹配程度的方法,主要有以下几种method含义CV_TM_SQDIFF平方差匹配法:该方法采...转载 2020-03-01 20:11:20 · 8852 阅读 · 0 评论 -
opencv学习笔记十七:直方图和直方图均衡化(cv2.calcHist、 cv2.equalizeHist)
一、计算图像直方图的函数:cv2.calcHist()cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) ->histimaes:输入的图像channels:选择图像的通道mask:掩膜,是一个大小和image一样的np数组,其中把需要处理的部分指定为1,不需要处理的部分指定为0...转载 2020-03-01 18:03:30 · 13889 阅读 · 5 评论 -
opencv学习笔记十六:图像的傅里叶变换
我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班。。。以时间为参照就是时域分析。但是在频域中一切都是静止的!高频:变化剧烈的灰度分量,例如边界低频:变化缓慢的灰度分量,例如一片大海低通滤波器:只保留低频,会使得图像模糊高通滤波器:只保留高频,会使得图像细节增强opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换成np.flo...转载 2020-02-28 10:59:52 · 1736 阅读 · 1 评论 -
opencv学习笔记十五:图像轮廓特征(周长、面积、轮廓近似以及外接矩形和外接圆)
上一个博客讲了如何查找和绘制一个图像中的轮廓;现在再来说一说这些轮廓的常见特征。1. cv2.contourArea(cnt, oriented = False) # 计算轮廓的面积参数说明:cnt为输入的单个轮廓值;oriented:默认值false,面向区域标识符,如果为true,该函数返回一个带符号的面积,其正负取决于轮廓的方向(顺时针还是逆时针)。根据这个特性可以根据面积的符号来确...转载 2020-02-28 10:19:53 · 5889 阅读 · 0 评论 -
opencv学习笔记十四:使用cv2.findContours()和cv2.drawContours()实现轮廓检测
cv2.findContours()函数cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])返回两个值:contours:hierarchy。参数1、image:寻找轮廓的图像;2、mode:表示轮廓的检索模式,有四种:cv2.RETR_EXTERNAL:表示只检测外轮廓,包含在外围轮廓内的...原创 2020-02-28 09:25:25 · 3727 阅读 · 0 评论 -
opencv学习笔记十三:图像金字塔(高斯金字塔,拉普拉斯金字塔)
图像金字塔1、高斯金字塔2、拉普拉斯金字塔高斯金字塔:向下采样方法(缩小)高斯金字塔:向上采样方法(放大)img=cv2.imread("AM.png")cv_show(img,'img')print(img.shape)#(442, 340, 3)up=cv2.pyrUp(img)cv_show(up,'up')print (up.shape)#(884, 68...转载 2020-02-27 20:19:23 · 1258 阅读 · 1 评论 -
opencv学习笔记十二:Canny边缘检测详解
Candy边缘检测的一般步骤使用高斯滤波器,以平滑图像,滤除噪声。计算图像中每个像素点的梯度强度和方向。应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。通过抑制孤立的弱边缘最终完成边缘检测。1、高斯滤波器2、梯度和方向3、非极大值抑...原创 2020-02-27 19:15:24 · 3429 阅读 · 0 评论 -
opencv学习笔记十一:Sobel、Scharr、laplacian三种图像梯度算子的使用
图像梯度-Sobel算子dst = cv2.Sobel(src, ddepth, dx, dy, ksize)ddepth:图像的深度,也即存储的数据类型,-1表示和原来的数据类型一样,是int8类型;一般不这么使用,下面会做解释dx和dy分别表示是否计算此轴的梯度ksize是Sobel算子的大小图像梯度-Scharr算子dst = cv2.Scharr(src, ddepth,...原创 2020-02-27 18:25:12 · 1082 阅读 · 0 评论 -
opencv学习笔记十:使用cv2.morphologyEx()实现开运算,闭运算,礼帽与黑帽操作以及梯度运算
openvc中morphologyEx()函数是一种形态学变化函数。数学形态学可以理解为一种滤波行为,因此也称为形态学滤波。滤波中用到的滤波器(kernal),在形态学中称为结构元素。结构元素往往是由一个特殊的形状构成,如线条、矩形、圆等。基本使用方式如下:cv2.morphologyEx(img, op, kernel)参数op的取值含义cv2.MORPH_OPEN...转载 2020-02-27 17:15:39 · 42528 阅读 · 2 评论 -
opencv学习笔记九:使用cv2.erode() 和 cv2.dilate()实现图像的腐蚀和膨胀
腐蚀与膨胀属于形态学操作,所谓的形态学,就是改变物体的形状,形象理解一些:腐蚀=变瘦 膨胀=变胖主要是采用 cv2.erode() 和 cv2.dilate(),需要注意一点的是,腐蚀和膨胀主要针对二值化图像的白色部分腐蚀:在原图的每一个小区域里取最小值,由于是二值化图像,只要有一个点为0,则都为0,来达到瘦身的目的。因此在下面的例子中,我们就可以使用腐蚀来将图片中的一些毛刺或者说很...原创 2020-02-27 16:44:34 · 25125 阅读 · 1 评论 -
opencv学习笔记八:图像的几种滤波操作
在图像的读取中,会存在一些躁声点,如一些白噪声,因此我们需要进行去噪操作;比如均值滤波、方框滤波、高斯滤波以及中值滤波。下面就以这四种滤波方式展示一下具体如何操作以及滤波后的效果import cv2import numpy as np# 1.图片中存在一些噪音点img = cv2.imread('lenaNoise.png')cv2.imshow('original', img)cv...原创 2020-02-25 22:38:32 · 812 阅读 · 0 评论 -
opencv学习笔记七:使用cv2.threshold实现全局和OTSU阈值二值化
首先介绍一下函数:ret, dst = cv2.threshold(src, thresh, maxval, type)的各参数含义src: 输入图,只能输入单通道图像,通常来说为灰度图thresh: 阈值maxval: 当像素值超过了阈值或者小于阈值,根据type所决定的要赋予像素点的值type含义cv2.THRESH_BINARY超过阈值部分取maxval(最...原创 2020-02-25 22:01:16 · 4702 阅读 · 1 评论 -
opencv学习笔记六:使用cv2.warpAffine()实现图像平移
此篇文章的主要目的是展示cv2.warpAffine()函数基本的使用方法,我们自己设置M变换矩阵实现平移,因为实现平移的M矩阵比较简单,所以我们可以自己设置import cv2import numpy as npimg = cv2.imread('aier.jpg')rows,cols = img.shape[:2]# 定义平移矩阵,需要是numpy的float32类型# x轴平...原创 2020-02-22 20:52:20 · 4536 阅读 · 0 评论 -
opencv学习笔记五:cv2.warpAffine()函数详解
cv2.warpAffine()函数主要是利用变换矩阵M对图像进行如旋转、仿射、平移等变换,只需要我们提供一个2*3的变换矩阵M,就可以对图像进行变换。它一般是和cv2.getRotationMatrix2D和cv.GetAffineTransform两个函数在一起使用,这两个函数是用来获取变换矩阵M,这样就不需要我们自己设置Mcv2.warpAffine(src, M, dsize,dst,f...原创 2020-02-22 20:14:28 · 17714 阅读 · 1 评论 -
opencv学习笔记四:使用cv2.getRotationMatrix2D()实现图像旋转
M=cv2.getRotationMatrix2D(center, angle, scale)函数有三个参数:center:图片的旋转中心angle:旋转角度scale:旋转后图像相比原来的缩放比例M:计算得到的旋转矩阵from matplotlib import pyplot as pltimport cv2import numpy as npimg = cv2.imrea...原创 2020-02-22 19:31:02 · 16786 阅读 · 2 评论 -
opencv学习笔记三:使用cv2.GetAffineTransform()实现图像仿射
仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。仿射变换需要一个M矩阵,但是由于仿射变换比较复杂,一般直接找很难找到这个矩阵,opencv提供了根据变换前后三个点的对应关系来自动求解M的函数,这个函数就是:M=cv2.GetAffineTransform(src, dst)src:原始图像中的三个点的坐标dst:变换后的这三个点对应...原创 2020-02-22 19:20:58 · 22567 阅读 · 0 评论 -
opencv学习笔记二:使用cv2.flip()实现图像翻转
cv2.flip(src, flipCode[, dst]) → dstsrc: 原始图像矩阵;dst: 变换后的矩阵;flipMode: 翻转模式,有三种模式;0 — ---垂直方向翻转;1----- -水平方向翻转;-1------水平、垂直方向同时翻转from matplotlib import pyplot as pltimport numpy as npimpor...原创 2020-02-22 18:41:05 · 3029 阅读 · 0 评论 -
opencv学习笔记一:实现图像素描效果(含批量修改代码)
这是一个我觉得比较有用的小脚本,可以将我们的彩色图片转换成素描图,并且转换的效果我们还可以通过cv2.divide(img_gray, img_blur, scale=225)中的scale参数去调整,这个不妨自己尝试一下,不同的图像可能需要不同的数值下面先来看一下效果如何from cv2 import cv2import myutilsimport osdef rgb_to_ske...原创 2020-02-22 16:48:43 · 1438 阅读 · 0 评论