以下是一个 Python 程序的示例,用于根据 RGB 图像中所有轮廓大小的平均值,筛选原图中轮廓大于平均值的图像部分并保存。

import cv2
import numpy as np

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

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

# 进行边缘检测
edges = cv2.Canny(gray, 50, 150)

# 找到轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 计算所有轮廓的大小
contour_sizes = [cv2.contourArea(contour) for contour in contours]

# 计算轮廓大小的平均值
average_contour_size = np.mean(contour_sizes)

# 筛选出轮廓大于平均值的部分
filtered_contours = [contour for contour in contours if cv2.contourArea(contour) > average_contour_size]

# 创建一个空白画布
mask = np.zeros_like(image)

# 在画布上绘制筛选出的轮廓
cv2.drawContours(mask, filtered_contours, -1, (255, 255, 255), thickness=cv2.FILLED)

# 将原图与筛选出的轮廓部分进行位运算,提取出轮廓部分
filtered_image = cv2.bitwise_and(image, mask)

# 保存筛选出的图像部分
cv2.imwrite('filtered_image.jpg', filtered_image)

请确保将程序中的'image.jpg'替换为你要处理的实际图像文件路径。筛选出的图像部分将保存为'filtered_image.jpg'。


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

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