文史赏析古今中外

Python:图像轮廓经过特定区域的筛选

2025-04-13  本文已影响0人  大龙10

一、步骤

二、程序

# -*- coding: utf-8 -*-
"""
Created on Sat Apr 12 09:20:29 2025
 ds004.py
"""

import cv2
import numpy as np

# 读取图像并转为灰度图
image = cv2.imread(r'd:/imgs/bak01/my_img01-B2.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 应用Canny边缘检测(阈值根据实际情况调整)
edges = cv2.Canny(gray, 50, 150)

# 查找所有轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

# 目标Y轴范围
y_min, y_max = 1100, 1500

# 筛选符合条件的轮廓
selected_contours = []
for cnt in contours:
    y_coords = cnt[:, 0, 1]  # 提取所有Y坐标
    cnt_min_y, cnt_max_y = np.min(y_coords), np.max(y_coords)
    # 判断轮廓的Y范围是否与目标区域重叠
    if cnt_max_y >= y_min and cnt_min_y <= y_max:
        selected_contours.append(cnt)

# 可选:绘制筛选后的轮廓
result = cv2.drawContours(image.copy(), selected_contours, -1, (0, 255, 0), 2)


zoom_xs=0.2
new_img2 = cv2.resize(result, None, fx=zoom_xs, fy=zoom_xs)

cv2.imshow('Continuous Lines', new_img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、运行结果

上一篇 下一篇

猜你喜欢

热点阅读