OpenCV腐蚀函数:cv2.erode()使用

这篇具有很好参考价值的文章主要介绍了OpenCV腐蚀函数:cv2.erode()使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

§ erode()

void cv::erode ( InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor = Point(-1,-1),
int  iterations = 1,
int  borderType = BORDER_CONSTANT,
const Scalar &  borderValue = morphologyDefaultBorderValue() 
)
Python:
dst = cv.erode( src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]] )

通过使用特定的结构元素来腐蚀图像。

该函数使用指定的结构元素侵蚀源图像,该元素确定取最小值的像素邻域的形状:

该函数支持就地模式。侵蚀可以应用几次(迭代)。对于多通道图像,每个通道都是独立处理的。

参数

src 输入图像; 通道数可以是任意的,图像类型应该是以下几种类型中的其中之一:CV_8U, CV_16U, CV_16S, CV_32F or CV_64F。
dst 输出图像,与 SRC 大小和类型相同。
kernel 用于腐蚀的结构元件;如果 element=Mat(),则使用 3 x 3 矩形结构元素。内核可以使用 getStructuringElement 函数获得。
anchor 锚点在元素中的位置;默认值 (-1, -1) 表示定位点位于元素中心。
iterations 施加腐蚀的次数。
borderType 像素外推法,,参考 BorderTypes
borderValue 常量边框情况下的边框值

See also

dilate, morphologyEx, getStructuringElement

Examples:

morphology2.cpp, Morphology_1.cpp, and segment_objects.cpp.

以上图标来自opencv的官方文档。


下面重点说一下结构元素的获取,官方文档推荐用cv2.getStructuringElement函数来获得,该函数共可生成三种类型的结构元素:

cv.MORPH_RECT矩形,腐蚀后的图像细节为矩形

cv.erode,opencv,人工智能,计算机视觉,python

 

cv.erode,opencv,人工智能,计算机视觉,python

 

cv.MORPH_CROSS十字交叉型,腐蚀后的图像细节会呈现十字型

cv.erode,opencv,人工智能,计算机视觉,python 

cv.erode,opencv,人工智能,计算机视觉,python

 

cv.MORPH_ELLIPSE椭圆形,腐蚀后的图像细节会呈现椭圆形

cv.erode,opencv,人工智能,计算机视觉,python

cv.erode,opencv,人工智能,计算机视觉,python

 

 除了上面三种类型的结构元素,也可以自己设定结构元素,例如:

kernel=(1,1,1,1)是一个4*1列向量,腐蚀后图像细节会呈现竖条状

cv.erode,opencv,人工智能,计算机视觉,python

 

kernel=np.array([[1, 1, 1, 1]], dtype=np.uint8)) ,两个[][]的是1*4的行向量,腐蚀后图像细节会呈现横条状

cv.erode,opencv,人工智能,计算机视觉,python

 注意:cv2.erode()函数默认白色为前景目标,黑色为背景,所有腐蚀操作对象都是对白色部分操作的,即腐蚀会使白色目标区域变小。上面实例中,白色为较多点,黑色部分是裂缝区域,腐蚀的对象为白色背景区域,所以会减小白色区域,增大了黑色区域。

代码:文章来源地址https://www.toymoban.com/news/detail-628513.html

import numpy as np
import cv2 as cv

image = cv.imread('gkbuhxb5pe.jpg')  # 读取图片,默认为彩色图片
imgGray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)  # 转换为灰度图像
imgGaussBlur = cv.GaussianBlur(imgGray, ksize=(3, 3), sigmaX=2)  # sigmaX:x 轴方向的高斯核标准差
binaryGaussian = cv.adaptiveThreshold(imgGaussBlur, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 7, 6)  # 局部自适应阈值二值化


kernel_RECT = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))  # 生成腐蚀结构元素
print('kenerl_RECT=')
print(kernel_RECT)
kernel_CROSS = cv.getStructuringElement(cv.MORPH_CROSS, (5, 5))  # 生成腐蚀结构元素
print('kenerl_CROSS=')
print(kernel_CROSS)
kernel_ELLIPS = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5))  # 生成腐蚀结构元素
print('kenerl_ELLIPS=')
print(kernel_ELLIPS)
binary_Erode1 = cv.erode(binaryGaussian, kernel=kernel_RECT)  # 腐蚀操,二值图像
binary_Erode2 = cv.erode(binaryGaussian, kernel=kernel_CROSS)  # 腐蚀操,二值图像
binary_Erode3 = cv.erode(binaryGaussian, kernel=kernel_ELLIPS)  # 腐蚀操,二值图像
binary_Erode4 = cv.erode(binaryGaussian, kernel=(1, 1, 1, 1))  # 腐蚀操,二值图像,kernel=(1,1,1,1)默认为一个4*1列向量
binary_Erode5 = cv.erode(binaryGaussian, kernel=np.array([[1, 1, 1, 1]], dtype=np.uint8))  # 腐蚀操,二值图像,两个[][]的是1*4的行向量

cv.namedWindow('image', 0)  # 设置窗口大小
cv.imshow('image', image)  # 显示图片
cv.waitKey(0)
cv.namedWindow('binary_Erode1', 0)  # 设置窗口大小
cv.imshow('binary_Erode1', binary_Erode1)  # 显示图片
cv.waitKey(0)
cv.namedWindow('binary_Erode2', 0)  # 设置窗口大小
cv.imshow('binary_Erode2', binary_Erode2)  # 显示图片
cv.waitKey(0)
cv.namedWindow('binary_Erode3', 0)  # 设置窗口大小
cv.imshow('binary_Erode3', binary_Erode3)  # 显示图片
cv.waitKey(0)
cv.namedWindow('binary_Erode4', 0)  # 设置窗口大小
cv.imshow('binary_Erode4', binary_Erode4)  # 显示图片
cv.waitKey(0)
cv.namedWindow('binary_Erode5', 0)  # 设置窗口大小
cv.imshow('binary_Erode5', binary_Erode5)  # 显示图片
cv.waitKey(0)

cv.imwrite('D:/binary_Erode1.jpg', binary_Erode1)  # 保存图像文件
cv.imwrite('D:/binary_Erode2.jpg', binary_Erode2)  # 保存图像文件
cv.imwrite('D:/binary_Erode3.jpg', binary_Erode3)  # 保存图像文件
cv.imwrite('D:/binary_Erode4.jpg', binary_Erode4)  # 保存图像文件
cv.imwrite('D:/binary_Erode5.jpg', binary_Erode5)  # 保存图像文件

到了这里,关于OpenCV腐蚀函数:cv2.erode()使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

    闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。 例如,在图 8-17 中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的闭运算),其中: 左图是原始图像。 中间的图是对原

    2024年02月14日
    浏览(79)
  • 使用OpenCV的cv2.imread函数读取图像介绍

    在计算机视觉和图像处理应用中,读取图像是一个常见的操作。OpenCV是一个广泛使用的图像处理库,它提供了 cv2.imread 函数,用于读取图像。本文将详细介绍如何使用 cv2.imread 函数,包括参数和用法。 首先,确保你已经安装了OpenCV库。你可以使用以下命令来安装OpenCV(如果尚

    2024年02月05日
    浏览(75)
  • 详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

    有的时候我们需要将两张图片在alpha通道进行混合,比如深度学习数据集增强方式MixUp。OpenCV的 addWeighted 提供了相关操作,此篇博客将详细介绍这个函数,并给出代码示例。🚀🚀 o u t p u t I m g = s a t u r a t e ( α ∗ i n p u t I m g 1 + β ∗ i n p u t I m g 2 + γ ) rm outputImg=saturate( al

    2024年02月06日
    浏览(98)
  • Opencv cv2.putText 函数详解

    具体函数如下: 函数源码如下: 对应的参数如下: 参数 具体表述 image 绘制的图像 text 绘制的文本 org 文本在图像中显示的坐标,用元组表示格式为(X坐标,Y坐标) font 文本字体类型,值可以为 FONT_HERSHEY_SIMPLEX 、 FONT_HERSHEY_PLAIN fontScale 字体比例因子乘以font-specific基本大小 c

    2024年02月09日
    浏览(76)
  • 【OpenCV常用函数:视频捕获函数】cv2.VideoCapture

    输入视频路径,创建VideoCapture的对象 该类的函数有: 1)video.isOpened: 检查视频捕获是否成功 2)video.read(): 读取视频帧,返回ret, frame,ret为bool类型,表示是否成功 3)video.release(): 关闭视频 4)video.get(prop): 获取video的属性 如果要读取视频的每一帧,然后进行相关的处理时,可

    2024年02月13日
    浏览(70)
  • 【OpenCV常用函数:颜色空间转换、阈值化】cv2.cvtColor()+cv2.threshold()

    对图像进行颜色空间的转换 对图像进行阈值化/二值化

    2024年02月13日
    浏览(67)
  • 深入解析OpenCV中的cv2.waitKey()函数

    OpenCV 是一个开源计算机视觉库,广泛用于图像处理和计算机视觉任务。在图像处理中,有时候我们需要在图像显示时等待用户的交互,例如等待用户按下一个键来关闭图像窗口或执行其他操作。这时就可以使用 waitKey() 函数。 waitKey() 函数通常与OpenCV的图像显示功能一起使用

    2024年02月04日
    浏览(50)
  • 【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

    对具有黑色背景的二值图像寻找白色区域的轮廓,因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 例如,如下的轮廓检测出的结果contours和hierarchy。 根据轮廓点检测对应轮廓的外接矩形

    2024年02月13日
    浏览(59)
  • 解决opencv, cv2.puttext函数无法显示中文字符

    背景: opencv内置的cv2.puttext函数不能显示中文字符,尝试了下列方法: (1)cv2.freetype。没有这个库; (2)opencv无法导入中文字体库; (3)卸载opencv-python,安装opencv-python-headless, opencv- contrib-python 方法: 使用PIL库作为中转 下载中文字体库https://github.com/StellarCN/scp_zh/blob/master/fonts/S

    2024年02月13日
    浏览(46)
  • 画圆操作——OpenCV中cv2.circle函数详解

    画圆操作——OpenCV中cv2.circle函数详解 在计算机视觉领域,图像处理是最基础的操作,而画圆操作又是其中不可或缺的一部分。在OpenCV中,cv2.circle函数可以实现画圆的功能。 下面是cv2.circle函数的基本格式: 其中各参数含义如下: img:要进行画圆操作的图片。 center:圆心坐

    2024年02月09日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包