python删除图片中有红色矩形的图片

python删除图片中有红色矩形的图片。包含红色矩形的图片会被删除。

import cv2
import os
import numpy as np

def detect_red_rectangles(image_path):
    # 读取图片
    image = cv2.imread(image_path)
    if image is None:
        return False

    # 将图片从BGR颜色空间转换为HSV颜色空间
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

    # 定义红色的HSV范围(OpenCV中H范围为0-179)
    lower_red1 = np.array([0, 100, 100])  # 红色范围1
    upper_red1 = np.array([10, 255, 255])
    lower_red2 = np.array([160, 100, 100])  # 红色范围2(因为红色在HSV空间中有两个范围)
    upper_red2 = np.array([179, 255, 255])

    # 创建红色区域的掩码
    mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
    mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
    red_mask = cv2.bitwise_or(mask1, mask2)

    # 对掩码进行形态学操作,去除噪声
    kernel = np.ones((5, 5), np.uint8)
    red_mask = cv2.morphologyEx(red_mask, cv2.MORPH_OPEN, kernel)
    red_mask = cv2.morphologyEx(red_mask, cv2.MORPH_CLOSE, kernel)

    # 查找红色区域的轮廓
    contours, _ = cv2.findContours(red_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # 遍历轮廓,检测矩形
    for contour in contours:
        # 计算轮廓的近似多边形
        epsilon = 0.02 * cv2.arcLength(contour, True)
        approx = cv2.approxPolyDP(contour, epsilon, True)

        # 如果近似多边形有4个顶点,则认为是矩形
        if len(approx) == 4:
            return True

    return False

def delete_images_with_red_rectangles(folder_path):
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            image_path = os.path.join(folder_path, filename)
            if detect_red_rectangles(image_path):
                print(f"Deleting {image_path} because it contains a red rectangle.")
                os.remove(image_path)

if __name__ == "__main__":
    folder_path = r'E:\images'  # 替换为你的文件夹路径
    delete_images_with_red_rectangles(folder_path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值