【机器视觉】OpenCV-Python 图像的形态学操作

简介: 【机器视觉】OpenCV-Python 图像的形态学操作
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# 设置兼容中文
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
AI 代码解读
D:\Anaconda\AZWZ\lib\site-packages\numpy\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:
D:\Anaconda\AZWZ\lib\site-packages\numpy\.libs\libopenblas.NOIJJG62EMASZI6NYURL6JBKM4EVBGM7.gfortran-win_amd64.dll
D:\Anaconda\AZWZ\lib\site-packages\numpy\.libs\libopenblas.WCDJNK7YVMPZQ2ME2ZZHJJRJ3JIKNDB7.gfortran-win_amd64.dll
  warnings.warn("loaded more than 1 DLL from .libs:\n%s" %


AI 代码解读
rain = cv.imread('img/rain.jpg')[:500,:500,:]
view = cv.imread('img/view.jpg')
letter = cv.imread('img/letter.png')
AI 代码解读
plt.figure()
plt.subplot(1,3,1)
m1 = plt.imshow(rain[:,:,::-1])
plt.title('rain.jpg')
plt.subplot(1,3,2)
m2 = plt.imshow(view[:,:,::-1])
plt.title('view.jpg')
plt.subplot(1,3,3)
m2 = plt.imshow(letter[:,:,::-1])
plt.title('letter.jpg')
AI 代码解读
Text(0.5, 1.0, 'letter.jpg')




AI 代码解读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIQEKGsZ-1637754238885)(output_2_1.png)]

1.腐蚀与膨胀

# 创建核结构 5*5
kenel = np.ones((5,5),np.uint8)
kenel
AI 代码解读
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]], dtype=uint8)



AI 代码解读
# 腐蚀
img1 = cv.erode(letter,kenel)
# 膨胀
img2 = cv.dilate(letter,kenel)
AI 代码解读
plt.figure()
plt.subplot(1,3,1)
m1 = plt.imshow(letter[:,:,::-1])
plt.title('原图')
plt.subplot(1,3,2)
m2 = plt.imshow(img1[:,:,::-1])
plt.title('腐蚀')
plt.subplot(1,3,3)
m3 = plt.imshow(img2[:,:,::-1])
plt.title('膨胀')
AI 代码解读
Text(0.5, 1.0, '膨胀')




AI 代码解读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uFue5OKs-1637754238887)(output_6_1.png)]

2.开闭运算

letter_open = cv.imread('img/letter_open.png')
letter_close = cv.imread('img/letter_close.png')
AI 代码解读
# 核结构
kenel = np.ones((10,10),np.uint8)
kenel
AI 代码解读
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=uint8)



AI 代码解读
# 开运算 先腐蚀再膨胀 消除主要图像外面的噪点
cv_open = cv.morphologyEx(letter_open,cv.MORPH_OPEN,kenel)
plt.figure()
plt.subplot(1,2,1)
m1 = plt.imshow(letter_open[:,:,::-1])
plt.title('原图')
plt.subplot(1,2,2)
m2 = plt.imshow(cv_open[:,:,::-1])
plt.title('开运算后')
AI 代码解读
Text(0.5, 1.0, '开运算后')




AI 代码解读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1hQzX0MJ-1637754238889)(output_10_1.png)]

# 闭运算 先膨胀再腐蚀 消除主要图像内部的噪点
cv_close = cv.morphologyEx(letter_close,cv.MORPH_CLOSE,kenel)
plt.figure()
plt.subplot(1,2,1)
m1 = plt.imshow(letter_close[:,:,::-1])
plt.title('原图')
plt.subplot(1,2,2)
m2 = plt.imshow(cv_close[:,:,::-1])
plt.title('闭运算后')
AI 代码解读
Text(0.5, 1.0, '闭运算后')




AI 代码解读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qP3R8eUw-1637754238891)(output_11_1.png)]

3.礼帽和黑帽运算

# 核结构
kenel = np.ones((10,10),np.uint8)
kenel
AI 代码解读
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=uint8)



AI 代码解读
# 礼帽 原图减去开运算结果图 作用是突出较亮的部分
top = cv.morphologyEx(letter_open,cv.MORPH_TOPHAT,kenel)
# 可视化
plt.figure()
plt.subplot(1,2,1)
m1 = plt.imshow(letter_open[:,:,::-1])
plt.title('原图')
plt.subplot(1,2,2)
m2 = plt.imshow(top[:,:,::-1])
plt.title('礼帽后')
AI 代码解读
Text(0.5, 1.0, '礼帽后')




AI 代码解读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SrX4DOta-1637754238892)(output_14_1.png)]

# 黑帽 闭运算结果图减去原图 作用是突出较暗的部分
black = cv.morphologyEx(letter_close,cv.MORPH_BLACKHAT,kenel)
# 可视化
plt.figure()
plt.subplot(1,2,1)
m1 = plt.imshow(letter_close[:,:,::-1])
plt.title('原图')
plt.subplot(1,2,2)
m2 = plt.imshow(black[:,:,::-1])
plt.title('黑帽后')
AI 代码解读
Text(0.5, 1.0, '黑帽后')




AI 代码解读

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xFQP6sML-1637754238893)(output_15_1.png)]

目录
打赏
0
0
0
0
116
分享
相关文章
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
58 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
170 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
966 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
77 4
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
222 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
4月前
|
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
166 7
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(1)
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
185 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
165 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等