深度学习03-(图像梯度处理、图像轮廓、图像预处理在AI中的应用)
深度学习03-计算机视觉基本理论2
深度学习03-(计算机视觉基本理论2)
图像梯度处理

什么是图像梯度

模板运算

均值滤波

高斯滤波

中值滤波

边沿检测


锐化


图像轮廓

什么是图像轮廓

查找和绘制轮廓

轮廓拟合

矩形包围框

最小包围圆形

最优拟合椭圆

逼近多边形

综合案例

# 图像校正示例
import cv2
import numpy as np
im = cv2.imread("../data/paper.jpg")
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
cv2.imshow('im', im)
# 模糊
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# 膨胀
dilate = cv2.dilate(blurred,
cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))) # 根据函数返回kernel
# 检测边沿
edged = cv2.Canny(dilate, # 原始图像
30, 120, # 滞后阈值、模糊度
3) # 孔径大小
# cv2.imshow("edged", edged)
# 轮廓检测
cnts = cv2.findContours(edged.copy(),
cv2.RETR_EXTERNAL, # 只检测外轮廓
cv2.CHAIN_APPROX_SIMPLE) # 只保留该方向的终点坐标
cnts = cnts[1]
docCnt = None
# 绘制轮廓
im_cnt = cv2.drawContours(im, # 绘制图像
cnts, # 轮廓点列表
-1, # 绘制全部轮廓
(0, 0, 255), # 轮廓颜色:红色
2) # 轮廓粗细
cv2.imshow("im_cnt", im_cnt)
# 计算轮廓面积,并排序
if len(cnts) > 0:
cnts = sorted(cnts, # 数据
key=cv2.contourArea, # 排序依据,根据contourArea函数结果排序
reverse=True)
for c in cnts:
peri = cv2.arcLength(c, True) # 计算轮廓周长
approx = cv2.approxPolyDP(c, 0.02 * peri, True) # 轮廓多边形拟合
# 轮廓为4个点表示找到纸张
if len(approx) == 4:
docCnt = approx
break
print(docCnt)
# 用圆圈标记处角点
points = []
for peak in docCnt:
peak = peak[0]
# 绘制圆
cv2.circle(im, # 绘制图像
tuple(peak), 10, # 圆心、半径
(0, 0, 255), 2) # 颜色、粗细
points.append(peak) # 添加到列表
print(points)
cv2.imshow("im_point", im)
# 校正
src = np.float32([points[0], points[1], points[2], points[3]]) # 原来逆时针方向四个点
dst = np.float32([[0, 0], [0, 488], [337, 488], [337, 0]]) # 对应变换后逆时针方向四个点
m = cv2.getPerspectiveTransform(src, dst) # 生成透视变换矩阵
result = cv2.warpPerspective(gray.copy(), m, (337, 488)) # 透视变换
cv2.imshow("result", result) # 显示透视变换结果
cv2.waitKey()
cv2.destroyAllWindows()

图像预处理在AI中的应用

图像数据增强

纯图像技术的缺陷

深度学习03-(图像梯度处理、图像轮廓、图像预处理在AI中的应用)的更多相关文章
- 深度学习tensorflow实战笔记(2)图像转换成tfrecords和读取
1.准备数据 首选将自己的图像数据分类分别放在不同的文件夹下,比如新建data文件夹,data文件夹下分别存放up和low文件夹,up和low文件夹下存放对应的图像数据.也可以把up和low文件夹换成 ...
- 3. OpenCV-Python——图像梯度算法、边缘检测、图像金字塔与轮廓检测、直方图与傅里叶变换
一.图像梯度算法 1.图像梯度-Sobel算子 dst = cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth:图像的深度 dx和dy分别表示水平和竖直方向 ks ...
- [Machine Learning] 深度学习中消失的梯度
好久没有更新blog了,最近抽时间看了Nielsen的<Neural Networks and Deep Learning>感觉小有收获,分享给大家. 了解深度学习的同学可能知道,目前深度 ...
- [Deep Learning] 深度学习中消失的梯度
好久没有更新blog了,最近抽时间看了Nielsen的<Neural Networks and Deep Learning>感觉小有收获,分享给大家. 了解深度学习的同学可能知道,目前深度 ...
- GitHub 上 57 款最流行的开源深度学习项目
转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...
- paper 53 :深度学习(转载)
转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...
- 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类
30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...
- 深度学习系列 Part(3)
这是<GPU学习深度学习>系列文章的第三篇,主要是接着上一讲提到的如何自己构建深度神经网络框架中的功能模块,进一步详细介绍 Tensorflow 中 Keras 工具包提供的几种深度神经网 ...
- 02基于python玩转人工智能最火框架之TensorFlow人工智能&深度学习介绍
人工智能之父麦卡锡给出的定义 构建智能机器,特别是智能计算机程序的科学和工程. 人工智能是一种让计算机程序能够"智能地"思考的方式 思考的模式类似于人类. 什么是智能? 智能的英语 ...
- GitHub 上 57 款最流行的开源深度学习项目【转】
GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...
随机推荐
- 一道测试Java值传递的题目
请给出下列代码的执行结果: public class T3 { public static void main(String[] args) { T3 t3 = new T3(); t3.first( ...
- 调用d2l.plt.imshow(img)不报错、不显示图像的问题
解决方案: 加入如下所示的代码: import matplotlib.pyplot as plt d2l.plt.imshow(img) plt.show()
- 不同页面的 body设置
由于SPA页面的特性,传统的设置 body 背景色的方法并不通用. 解决方案:利用组件内的路由实现 第一种方式 // 实例创建之前 beforeCreate(){ document.querySele ...
- idea 切换database数据库方言
在适配各种国产数据库时常常遇到存在数据库方言的情况,例如openGauss支持oracle兼容模式.. 在这种情况下,就需要在idea里对方言进行切换,否则无法执行oracle语法的sql. 1.连接 ...
- Axure RP Extension for Chrome 0.6.2安装和详解
1.当我们用网页访问一个本地页面时就会出现这种问题,提示你要安装浏览器的扩展程序包,以下有搜狗浏览器如何安装,qq浏览器
- JDK1.8中的时间处理API
相比于JDK1.8之前的SimpleDateFormat以及Calendar等API带来的易误用.线程不安全等问题,JDK1.8提供了LocalDate,LocalTime,LocalDateTime ...
- Android笔记--动态申请权限
动态申请权限 在动态申请权限这里,一共分为两种不同的模式,分别是Lazy模式(懒汉式)和Hungry模式(饿汉式),这两种模式区分的话,可以通俗地解释一下就是,对于懒汉来说,只有在我们点击某个按钮需要 ...
- Java输入与输出语句详细解析
前言 我们在前面的文章中,学习了如何创建Java文件,也学习了Java里的标识符.运算符.进制等内容.有些同学觉得还不够过瘾,给壹哥发来了好多私信,期待我能够把进度更新的再快一点.这不,新内容这就给大 ...
- PyQt5学习 (4)--QAbstractButton(下)
QAbstractBUtton: 所有按钮控件的基类 提供按钮的通用功能 继承自QWidget 属于抽象类别,不能直接去使用,必须借助于子类(除非你觉得子类不够用,想自定义一个按钮) ...
- 数据挖掘系统聚类—R实现
系统聚类法 聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,最后的结果是希望同类之间的差异性尽可能小,不同类之间的差异性尽可能大.不同的类具有能够表达异于其他类的指标,这样针对不同的类,后续就 ...