python+openCV图像处理(二十六)开运算与闭运算

import cv2 as cv
import numpy as np

def open_demo(image):#开操作=腐蚀+膨胀  去外边白点
    print(image.shape)
    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, (15, 15))
    binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
    cv.imshow("open-result", binary)

def close_demo(image):#闭操作=膨胀+腐蚀 填充里边黑点
    print(image.shape)
    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))
    binary = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
    cv.imshow("close_demo", binary)

src = cv.imread("1.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
open_demo(src)
close_demo(src)

cv.waitKey(0)

cv.destroyAllWindows()
### Python OpenCV 中的运算运算 #### 运算 运算是形态学操作的一种,其核心原理是对图像先执行腐蚀操作后再进行膨胀操作。这种组合可以有效去除小型噪声或孤立的小区域对象[^1]。 在 OpenCV 的实现中,可以通过 `cv2.morphologyEx()` 函数完成运算的操作。具体参数如下: - **`src`**: 输入图像。 - **`op`**: 形态学操作类型,在此为 `cv2.MORPH_OPEN` 表示运算。 - **`kernel`**: 结构化元素(即卷积核),用于定义腐蚀和膨胀的程度。 以下是具体的代码示例: ```python import cv2 import numpy as np # 加载图像 img = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE) # 定义结构化元素 (5x5 的正方形) kernel = np.ones((5, 5), dtype=np.uint8) # 执行运算 opening_result = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # 显示结果 cv2.imshow('Original Image', img) cv2.imshow('Opening Result', opening_result) cv2.waitKey(0) cv2.destroyAllWindows() ``` --- #### 运算 运算是另一种形态学操作,其过程正好相反:先对图像执行膨胀操作,然后再进行腐蚀操作。这种方法主要用于填充目标内的小孔洞或者连接邻近的对象[^3]。 同样地,也可以通过 `cv2.morphologyEx()` 实现运算功能。只需将第二个参数设置为 `cv2.MORPH_CLOSE` 即可。 下面是运算的具体代码示例: ```python import cv2 import numpy as np # 加载图像 img = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE) # 定义结构化元素 (5x5 的正方形) kernel = np.ones((5, 5), dtype=np.uint8) # 执行运算 closing_result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) # 显示结果 cv2.imshow('Original Image', img) cv2.imshow('Closing Result', closing_result) cv2.waitKey(0) cv2.destroyAllWindows() ``` --- #### 关键点总结 1. **运算的作用**:消除小型噪点、平滑物体边界并保留主要形状特征。 2. **运算的作用**:填补内部空隙、连通相邻部分并保持整体轮廓不变。 3. **结构化元素的选择**:通常使用矩形 (`np.ones`) 或自定义形状来控制效果强度[^4]。 上述方法能够帮助发者快速掌握如何利用 OpenCV 库中的形态学工具解决实际问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值