自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

耐心的小黑的博客

爱学习的小黑!

  • 博客(23)
  • 收藏
  • 关注

转载 opencv学习笔记十六:图像的傅里叶变换

我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班。。。以时间为参照就是时域分析。但是在频域中一切都是静止的!高频:变化剧烈的灰度分量,例如边界低频:变化缓慢的灰度分量,例如一片大海低通滤波器:只保留低频,会使得图像模糊高通滤波器:只保留高频,会使得图像细节增强opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换成np.flo...

2020-02-28 10:59:52 1637 1

转载 opencv学习笔记十五:图像轮廓特征(周长、面积、轮廓近似以及外接矩形和外接圆)

上一个博客讲了如何查找和绘制一个图像中的轮廓;现在再来说一说这些轮廓的常见特征。1. cv2.contourArea(cnt, oriented = False) # 计算轮廓的面积参数说明:cnt为输入的单个轮廓值;oriented:默认值false,面向区域标识符,如果为true,该函数返回一个带符号的面积,其正负取决于轮廓的方向(顺时针还是逆时针)。根据这个特性可以根据面积的符号来确...

2020-02-28 10:19:53 5436

原创 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 3633

转载 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 1187 1

原创 opencv学习笔记十二:Canny边缘检测详解

Candy边缘检测的一般步骤使用高斯滤波器,以平滑图像,滤除噪声。计算图像中每个像素点的梯度强度和方向。应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。通过抑制孤立的弱边缘最终完成边缘检测。1、高斯滤波器2、梯度和方向3、非极大值抑...

2020-02-27 19:15:24 3239

原创 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 1036

转载 opencv学习笔记十:使用cv2.morphologyEx()实现开运算,闭运算,礼帽与黑帽操作以及梯度运算

openvc中morphologyEx()函数是一种形态学变化函数。数学形态学可以理解为一种滤波行为,因此也称为形态学滤波。滤波中用到的滤波器(kernal),在形态学中称为结构元素。结构元素往往是由一个特殊的形状构成,如线条、矩形、圆等。基本使用方式如下:cv2.morphologyEx(img, op, kernel)参数op的取值含义cv2.MORPH_OPEN...

2020-02-27 17:15:39 36671 2

原创 opencv学习笔记九:使用cv2.erode() 和 cv2.dilate()实现图像的腐蚀和膨胀

腐蚀与膨胀属于形态学操作,所谓的形态学,就是改变物体的形状,形象理解一些:腐蚀=变瘦 膨胀=变胖主要是采用 cv2.erode() 和 cv2.dilate(),需要注意一点的是,腐蚀和膨胀主要针对二值化图像的白色部分腐蚀:在原图的每一个小区域里取最小值,由于是二值化图像,只要有一个点为0,则都为0,来达到瘦身的目的。因此在下面的例子中,我们就可以使用腐蚀来将图片中的一些毛刺或者说很...

2020-02-27 16:44:34 24840 1

原创 opencv学习笔记八:图像的几种滤波操作

在图像的读取中,会存在一些躁声点,如一些白噪声,因此我们需要进行去噪操作;比如均值滤波、方框滤波、高斯滤波以及中值滤波。下面就以这四种滤波方式展示一下具体如何操作以及滤波后的效果import cv2import numpy as np# 1.图片中存在一些噪音点img = cv2.imread('lenaNoise.png')cv2.imshow('original', img)cv...

2020-02-25 22:38:32 750

原创 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 4546 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 4424

原创 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 17239 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 16652 2

原创 opencv学习笔记三:使用cv2.GetAffineTransform()实现图像仿射

仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。仿射变换需要一个M矩阵,但是由于仿射变换比较复杂,一般直接找很难找到这个矩阵,opencv提供了根据变换前后三个点的对应关系来自动求解M的函数,这个函数就是:M=cv2.GetAffineTransform(src, dst)src:原始图像中的三个点的坐标dst:变换后的这三个点对应...

2020-02-22 19:20:58 22343

原创 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 2960

原创 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 1359

原创 python基础学习一:numpy.transpose和numpy.swapaxes的使用与区别

在图像处理中,有时候需要维度转换,比如将图像的通道维移到第一维,下面来介绍一下在numpy中如何对矩阵维度进行转换1.使用numpy.transpose(a, axes=None)>>>a=np.arange(0,12).reshape(3,2,2)>>>print(a,a.shape)[[[ 0 1] [ 2 3]] [[ 4 5] ...

2020-02-22 15:53:49 1138

转载 python基础学习二:numpy.where的用法详解

要想弄清楚np.where怎么使用,需要对矩阵中每个元素的位置表示方式有所了解,下面介绍一下它的两个主要用法np.where(condition, x, y);满足条件(condition),输出x,不满足输出y。>>> aa = np.arange(10)>>> np.where(aa,1,-1)array([-1, 1, 1, 1, 1,...

2020-02-22 15:13:11 2227

原创 tensorflow2.x学习笔记二:将keras项目移植到tensorflow2.x下需要注意的问题

基础知识看的差不多的了,所以最近开始玩一些有趣的项目。因为现在tensorflow已经作为keras的后端,将其集成了过来,API是在tf.keras下面,所以keras的项目也可以直接拿来用为了方便移植,我们一般都是直接从import导入模块的地方对代码进行微调,这样下面的代码基本上不用修改。本来想着直接在keras前面加上tensorflow就可以了,但是好像出了点问题,但至少我出了问题。我...

2020-02-20 12:12:58 1676 2

原创 python基础学习三:批量修改图片名称的小程序

因为最近经常要处理图片数据,而下载的图片的名称一般都太长或者不规范;为了方便实用每一张图片的path,并且本人又有强迫症,所以就随便写个批量修改图片名称的程序下面是对该程序使用方法的介绍输入参数dir_path:保存有图片的文件夹路径prefix:图片名称的前缀postfix:图片名称的后缀修改结果prefix_index_postfix.jpg,这里的index指的是你的图片在...

2020-02-15 22:27:18 1276

原创 tensorflow2.x学习笔记一:简述在Anaconda下安装tf2.1的步骤

首先在官网下载安装好Anaconda,目前tf2.1支持python3.5-3.7,所以应该下载所需版本安装CUDA传送门和CUDNN传送门,注意一定要和目前的tf2.1支持的版本匹配,比如CUDA10.1,cuDNNv7.6.5。具体安装过程,参考此处传送门在Anaconda中创建虚拟环境,在开始菜单中打开 Anaconda Prompt,然后在命令行输入conda create -n t...

2020-02-12 11:48:40 3209

原创 pytorch学习笔记一:简述在Anaconda下安装pytorch1.4的步骤

首先在官网下载安装好Anaconda,目前pytorch支持python3.5-3.7,所以应该下载所需版本安装CUDA传送门和CUDNN传送门,注意一定要和目前的pytorch支持的版本匹配,比如CUDA10.1,cuDNNv7.6.5。具体安装过程,参考此处传送门在Anaconda中创建虚拟环境,在开始菜单中打开 Anaconda Prompt,然后在命令行输入conda cr...

2020-02-12 11:38:24 2105

原创 tensorflow2.x踩坑记录1:运行tf2.x出现如下错误:Blas GEMM launch failed或者Failed to get convolution algorithm

我的第一篇CSDN博客,我比较喜欢把笔记都记录在Word上,然后保存好;但是对于一些学习中遇到的错误,一些不管大小的坑,还是试着分享出来,也方便以后自己查看==运行新版的tf2.0或者tf2.1出现这个错误:Blas GEMM launch failed : a.shape=(300, 1), b.shape=(1, 10), m=300, n=10, k=1经过查找相关资料和自己试验,发现这...

2020-02-12 09:52:36 3979 7

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除