You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python自动识别并裁剪图像中白色边框矩形内的区域?

基于OpenCV的白色边框ROI识别与裁剪方案

以下是实现自动识别白色边框ROI并裁剪保存的Python代码,依赖OpenCV库:

import cv2
import numpy as np

# 读取图像
img = cv2.imread("ttLT2.jpg")
# 转灰度图简化处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化分离白色边框:白色区域设为前景,其余为背景
_, binary = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY)

# 形态学闭运算,填补边框缝隙、过滤小噪点
kernel = np.ones((5,5), np.uint8)
binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)

# 查找图像轮廓
contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 筛选面积最大的轮廓(对应目标白色边框)
max_contour = max(contours, key=cv2.contourArea)

# 获取轮廓外接矩形坐标,裁剪ROI区域
x, y, w, h = cv2.boundingRect(max_contour)
roi = img[y:y+h, x:x+w]

# 保存裁剪后的图像
cv2.imwrite("cropped_roi.jpg", roi)

关键步骤说明

  • 灰度转换:将彩色图转为灰度图,降低处理复杂度
  • 二值化:阈值设为240是因为白色边框灰度值接近255,可精准分离目标区域
  • 形态学操作:闭运算修复边框细小断裂,同时消除图像中的白色小噪点
  • 轮廓筛选:取面积最大的轮廓,确保选中目标白色边框而非零星噪点

如果图像存在多个白色边框,可通过遍历轮廓+面积阈值筛选目标:

for cnt in contours:
    area = cv2.contourArea(cnt)
    if area > 10000:  # 根据实际场景调整面积阈值
        x, y, w, h = cv2.boundingRect(cnt)
        roi = img[y:y+h, x:x+w]
        cv2.imwrite(f"cropped_roi_{cnt}.jpg", roi)

内容的提问来源于stack exchange,提问作者A.Sa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:05:21