首页 > 其他分享 >OpenCV 其他形态学操作

OpenCV 其他形态学操作

时间:2024-08-09 09:28:34浏览次数:12  
标签:binary kernel demo dst imshow 形态学 OpenCV 操作 cv

一:顶帽实现(原图像与开操作图像的差值)

import cv2 as cv
import numpy as np

def top_hat_demo(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)  #这里的二值化图像就可以看作是原图像(注意:基于腐蚀膨胀是可以直接对彩色图像操作的))
    kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE,(5,5))
    dst = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)  #查看开操作图像
    cv.imshow("open_demo",dst)
    dst = cv.morphologyEx(binary,cv.MORPH_TOPHAT,kernel)  #查看顶帽图像
    cv.imshow("top_hat_demo",dst)


src = cv.imread("./cir.png")  #读取图片
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)    #创建GUI窗口,形式为自适应
cv.imshow("input image",src)    #通过名字将图像和窗口联系

top_hat_demo(src)

cv.waitKey(0)   #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows()  #销毁所有窗口

在这里插入图片描述

二:黑帽实现(原图像与闭操作图像的差值)

def black_hat_demo(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(15,15))
    dst = cv.morphologyEx(binary,cv.MORPH_CLOSE,kernel)
    cv.imshow("close_demo",dst)
    dst = cv.morphologyEx(binary,cv.MORPH_BLACKHAT,kernel)
    cv.imshow("black_hat_demo",dst)

在这里插入图片描述

三:图像的梯度
(一)基本梯度(膨胀后的图像与腐蚀后的图像差值)

def graditent_demo(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(15,15))
    dst = cv.dilate(binary, kernel)
    cv.imshow("dilate_demo", dst)
    dst = cv.erode(binary, kernel)
    cv.imshow("erode_demo", dst)
    dst = cv.morphologyEx(binary,cv.MORPH_GRADIENT,kernel)
    cv.imshow("graditent_demo",dst)

在这里插入图片描述

(二)内部梯度(原图像减去腐蚀后的图像差值)

def graditent_demo(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(15,15))
    erode_dst = cv.erode(binary, kernel)
    cv.imshow("erode_demo", erode_dst)
    dst2 = cv.subtract(dilate_dst,binary)
    cv.imshow("inner graditent",dst1)

在这里插入图片描述

(三)外部梯度(膨胀后图像与原图差值)

def graditent_demo(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(15,15))
    dilate_dst = cv.dilate(binary, kernel)
    cv.imshow("dilate_demo", dilate_dst)
    dst2 = cv.subtract(dilate_dst,binary)
    cv.imshow("outer graditent",dst2)

在这里插入图片描述

标签:binary,kernel,demo,dst,imshow,形态学,OpenCV,操作,cv
From: https://blog.csdn.net/m0_37302966/article/details/141052398

相关文章

  • OpenCV 分水岭算法
    使用分水岭算法进行图像分割(一)获取灰度图像,二值化图像,进行形态学操作,消除噪点defwatershed_demo(image):blur=cv.pyrMeanShiftFiltering(image,10,100)gray=cv.cvtColor(blur,cv.COLOR_BGR2GRAY)#获取灰度图像ret,binary=cv.threshold(gray,0,2......
  • OpenCV 人脸检测
    目录一:相关依赖文件下载二:实现步骤(图片检测)  (一)读取图片  (二)灰度转换  (三)获取人脸识别训练数据  (四)探测人脸,获取相关数据  (五)根据相关数据在原图像上画出人脸位置  (六)全部代码三:实现视频检测人脸  步骤相同,我们只需要将视频中每一帧图像进行处理,......
  • OpenCV 数字验证码识别
    目录一:依赖环境安装二:安装tesseract-ocr  (一)介绍  (二)下载地址  (三)下载traineddata训练数据三:代码实现一:依赖环境安装pipinstallPillowpip3installpytesseract二:安装tesseract-ocr(一)介绍其中pytesseract会直接调用tesseract模块,我们需要进行安装不......
  • OpenCV 基本使用
    OpenCV基本使用参考教程:GitHub-gaoxiang12/slambook2:edition2oftheslambook1.安装OpenCV1.1下载OpenCV参考教程:无法定位软件包libjasper-dev的解决办法-CSDN博客视觉slam14讲ch5opencv安装ubuntu20.04_libvtk5-dev-CSDN博客OpenCV提供了大量的开源图像算......
  • Python和AI库NumPy(二):数组创建与操作的深入探索
    目录1.数组创建1.1基本数组创建1.2使用内置函数创建数组1.3特殊数组的创建2.数组的基本操作2.1数组属性2.2数组索引和切片2.3数组的形状操作2.4数组拼接与分割3.数组的数学操作3.1基本算术操作3.2广播机制3.3线性代数运算4.高级数组操作4.1花式......
  • OpenCV专栏介绍
    在当今人工智能和计算机视觉领域,OpenCV作为一个功能强大的开源库,已经成为实现各种视觉算法的基石。本“OpenCV”专栏致力于帮助读者深入理解并掌握OpenCV的使用,从而在计算机视觉项目中发挥关键作用。专栏导读随着技术的不断进步,计算机视觉在自动驾驶、人脸识别、图像处理......
  • Diskpart 操作
    DiskPart是Windows操作系统中的一个命令行工具,用于管理磁盘分区。它可以创建、删除、格式化和调整分区大小,还可以设置活动分区等。以下是一些常用的DiskPart命令和操作步骤。一、启动DiskPart打开命令提示符:按Win+R打开运行窗口,输入cmd并按回车。或者在开始菜......
  • 离线数仓之Hive的基础操作
    Hive简介hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是......
  • 不需要学编程,自制自己的操作系统!一个0基础自制操作系统的软件!详细教程!
    不需要学编程,自制自己的操作系统!一个0基础自制操作系统的软件!详细教程创建.py文件,内容如下fromtkinterimport*code='\n[org0x7c00]\n\nstart:\n\t\n\tmovbp,0x8000\n\tmovsp,bp\n\n\t\n\tmovax,0x0600\n\tmovbx,0x0700\n\tmovcx,0\n\tmovdx,0x184f\n\tint......
  • 用Python简单操作MySQL!轻松实现数据读写
    PyMySQL是Python编程语言中的一个第三方模块,它可以让Python程序连接到MySQL数据库并进行数据操作。它的使用非常简单,只需要安装PyMySQL模块,然后按照一定的步骤连接到MySQL数据库即可。本文将介绍PyMySQL的安装、连接MySQL数据库、创建表、插入数据、查询数据、更新数据和删除数据......