IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 常见的图像处理操作 -> 正文阅读

[人工智能]常见的图像处理操作

图像阈值

# src:输入图,只能输入单通道图像,通常来说为灰度图
# dst: 输出图
# thresh: 阈值
# maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值
# type: 二值化操作的类型,包含以下五种类型:cv2.THRESH_BINARY, cv2.THRESH_BINARY_INV,
# cv2.THRESH_TRUNC, cv2.THRESH_TOZERO, cv2.THRESH_TOZERO_INV
# 返回的第一个参数ret是阈值,第二个参数是处理后的图片
ret, dst = cv2.threshold(src, thresh, maxval, type)
import matplotlib as plt
import cv2
import numpy as np

# 将图片以灰度图的形式读入
img = cv2.imread('D:/python/opencv/data/image/test_videos_2_7.jpg', cv2.IMREAD_GRAYSCALE)
# cv2.THRESH_BINARY 超过阈值部分取maxval(最大值),否则取0
ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# cv2.THRESH_BINARY_INV 是cv2.THRESH_BINARY的反转
ret, thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
# cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变
ret, thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
# cv2.THRESH_TOZERO 大于阈值部分不改变,否则设为0
ret, thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
# cv2.THRESH_TOZERO_INV 是cv2.THRESH_TOZERO的反转
ret, thresh5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)
cv2.imshow('BINARY', thresh5)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像平滑处理

均值滤波

# 使用一个(3,3)的各个值为1的矩阵取求平均值
blur = cv2.blur(img, (3, 3))

方框滤波

# -1表示通道数和原img一样,一般都使用-1.
# 使用normalize=True后,进行归一化处理,处理效果和均值滤波一样
box = cv2.boxFilter(img, -1, (3, 3), normalize=True)
cv2.imshow('box', box)
# 使用normalize=False后,没有进行归一化处理,只是将(3,3)
# 中的像素相加,若最后大于255,都当作255处理
box = cv2.boxFilter(img, -1, (3, 3), normalize=False)
cv2.imshow('box', box)

高斯滤波

# (5,5)表示高斯矩阵的长和宽,1表示标准差取1
gaussian = cv2.GaussianBlur(img, (5, 5), 1)
cv2.imshow('gaussian', gaussian)

中值滤波

# 5表示矩阵为(5,5),将取到的25个值排序,取中间值
median = cv2.medianBlur(img, 5)
cv2.imshow('median', median)

小技巧

# 同时展示所有的
# 将所有的图片水平的拼接在一起
# res = np.hstack((blur, box, gaussian, median))
# 将所有的图片竖直的拼接在一起
res = np.vstack((blur, box, gaussian, median))
cv2.imshow('all', res)

形态学

腐蚀操作

# np.ones()表示返回一个全1的数组
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(img, kernel, iterations=1)
cv2.imshow('erosion', erosion

对比迭代次数不一样的腐蚀操作

kernel = np.ones((30, 30), np.uint8)
erosion_1 = cv2.erode(img, kernel, iterations=1)
erosion_2 = cv2.erode(img, kernel, iterations=2)
erosion_3 = cv2.erode(img, kernel, iterations=3)
res = np.hstack((erosion_1, erosion_2, erosion_3))
cv2.imshow('res', res)

膨胀操作

kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(img, kernel, iterations=1)
dilate = cv2.dilate(erosion, kernel, iterations=1)
cv2.imshow('dilate', dilate)

注:经过腐蚀操作和膨胀操作,可以将图像中的一些毛刺去掉

开运算和闭运算

# 开:先腐蚀,后膨胀
# 开运算可以将毛刺腐蚀掉
kernel = np.ones((5,5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow('opening', opening)
# 闭:先膨胀,后腐蚀
# 不仅不能把毛刺腐蚀掉,反而使毛刺变得更大
kernel = np.ones((5,5), np.uint8)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow('closing', closing)

梯度运算

# 梯度运算:膨胀-腐蚀,得到的是一个轮廓
kernel = np.ones((5,5), np.uint8)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('gradient', gradient)

礼帽和黑帽

礼帽:原始输入-开运算结果,即显示毛刺

kernel = np.ones((5,5), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)

黑帽:闭运算结果-原始输入,即显示轮廓

kernel = np.ones((5,5), np.uint8)
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:36:04  更:2021-08-12 16:37:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:02:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码