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

如何使用Python提取图片中的矩形区域?

使用Python提取图片中的矩形区域

要从指定图片中提取目标矩形区域,我们可以用OpenCV库快速实现,以下是具体步骤:

1. 安装依赖

首先确保安装了OpenCV和NumPy:

pip install opencv-python numpy

2. 手动指定坐标裁剪

如果已经知道矩形的精确坐标,可以直接编写代码裁剪:

import cv2

# 读取原始图片
img = cv2.imread("E9kVn.png")

# 根据原始图和目标效果,定义矩形的左上角、右下角坐标
# 可通过画图工具打开图片,鼠标悬停获取坐标
x1, y1, x2, y2 = 235, 155, 765, 405

# 裁剪区域:OpenCV图像格式为[y_start:y_end, x_start:x_end]
cropped_img = img[y1:y2, x1:x2]

# 保存裁剪后的图片
cv2.imwrite("cropped_result.png", cropped_img)

# 可选:查看效果
cv2.imshow("原始图", img)
cv2.imshow("裁剪结果", cropped_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 交互式框选裁剪

如果不确定坐标,可以用交互式工具手动框选矩形:

import cv2

# 全局变量存储坐标和绘图状态
drawing = False
x1, y1, x2, y2 = 0, 0, 0, 0
img_copy = None

def select_rect(event, x, y, flags, param):
    global x1, y1, x2, y2, drawing, img_copy
    if event == cv2.EVENT_LBUTTONDOWN:
        # 按下左键开始框选
        drawing = True
        x1, y1 = x, y
        img_copy = param.copy()
    elif event == cv2.EVENT_MOUSEMOVE:
        # 移动鼠标实时绘制矩形
        if drawing:
            temp_img = img_copy.copy()
            cv2.rectangle(temp_img, (x1, y1), (x, y), (0, 255, 0), 2)
            cv2.imshow("框选区域", temp_img)
    elif event == cv2.EVENT_LBUTTONUP:
        # 松开左键结束框选
        drawing = False
        x2, y2 = x, y
        cv2.rectangle(param, (x1, y1), (x2, y2), (0, 255, 0), 2)
        cv2.imshow("框选区域", param)

# 读取图片并启动交互式窗口
img = cv2.imread("E9kVn.png")
cv2.imshow("框选区域", img)
cv2.setMouseCallback("框选区域", select_rect, img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 裁剪并保存结果
cropped_img = img[y1:y2, x1:x2]
cv2.imwrite("cropped_result.png", cropped_img)

运行这段代码后,在弹出的图片窗口中按住左键拖动即可框选目标区域,松开左键后程序会自动裁剪并保存结果。

内容的提问来源于stack exchange,提问作者李建敏

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:50:27