这是一个基于 OpenCV 库的 Python 程序,用于遍历图像中的轮廓并根据轮廓的大小进行筛选。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.jpg')

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化处理
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 轮廓检测
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 计算所有轮廓的面积
areas = [cv2.contourArea(contour) for contour in contours]

# 计算轮廓面积的平均值
average_area = np.mean(areas)

# 去除轮廓面积小于平均值的部分
filtered_contours = [contour for contour in contours if cv2.contourArea(contour) > average_area]

# 创建一个空白图像
result = np.zeros_like(image)

# 绘制保留的轮廓部分到结果图像
cv2.drawContours(result, filtered_contours, -1, (255, 255, 255), thickness=cv2.FILLED)

# 显示结果图像
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

请确保将程序中的'image.jpg'替换为你要处理的图像文件名。程序将使用灰度图像和阈值化处理来获取图像的二值化版本。然后,通过轮廓检测获得所有的轮廓。计算所有轮廓的面积,并计算平均值。接下来,筛选出面积大于平均值的轮廓,并将这些轮廓绘制到一个空白图像上。最后,显示结果图像。

OpenCV Python 程序:去除图像中面积小于平均值的轮廓

原文地址: https://www.cveoy.top/t/topic/qiJH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录