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

如何使用Python提取图片右侧的两个图表(支持合并提取)

提取图片右侧两个图表的解决方案

针对你需要提取图片右侧两个图表的需求,现有代码仅筛选最大轮廓,无法精准定位目标区域。下面给你两种适合新手的实现方案:

方法一:基于坐标直接裁剪(简单易上手)

如果能确定右侧图表在图片中的大致位置,直接通过坐标裁剪是最快速的方案:

  1. 查看图片宽高,确定右侧区域的起始x坐标;
  2. 截取对应区域并保存即可。

修改后的代码:

import cv2
import numpy as np

# 加载图片
image_path = r'C:\Prarthana\PROJECTS\GitHub\MajorProject\Images\1.jpg'
image = cv2.imread(image_path)

# 获取图片尺寸:(高度, 宽度, 通道数)
height, width = image.shape[:2]

# 定义右侧区域的起始x坐标(可根据实际图片调整比例,或用画图工具查看精准坐标)
start_x = int(width * 0.5)

# 裁剪右侧区域:保留整个高度,从start_x到图片最右侧
right_charts = image[:, start_x:]

# 保存提取的图表
cv2.imwrite(r'C:\Prarthana\PROJECTS\GitHub\MajorProject\Images\output\extracted_right_charts.jpg', right_charts)

提示:用系统画图工具打开原图片,鼠标悬停在右侧图表左边缘,可查看底部状态栏的x坐标,替换start_x的数值能获得更精准的裁剪结果。

方法二:优化轮廓筛选(更通用)

如果需要自动识别右侧图表区域,可通过筛选矩形轮廓实现:

  1. 对边缘检测后的轮廓进行筛选,保留近似矩形的轮廓;
  2. 筛选出位置偏右的轮廓;
  3. 合并这些轮廓区域,生成掩码后提取图表。

修改后的代码:

import cv2
import numpy as np

# 加载图片
image_path = r'C:\Prarthana\PROJECTS\GitHub\MajorProject\Images\1.jpg'
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 预处理:模糊降噪+边缘检测
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(blurred, 50, 150)

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

# 筛选符合条件的轮廓:近似矩形、面积足够大、位置偏右
width = gray.shape[1]
target_contours = []
for cnt in contours:
    # 计算轮廓的近似多边形
    peri = cv2.arcLength(cnt, True)
    approx = cv2.approxPolyDP(cnt, 0.02 * peri, True)
    # 筛选规则:近似矩形(4个顶点)、面积大于阈值、轮廓中心偏右
    if len(approx) == 4:
        area = cv2.contourArea(cnt)
        if area > 10000:  # 面积阈值根据实际图片调整
            M = cv2.moments(cnt)
            cx = int(M['m10'] / M['m00'])
            if cx > width * 0.4:  # 只保留中心在图片右侧40%区域的轮廓
                target_contours.append(cnt)

# 创建掩码并绘制所有目标轮廓
mask = np.zeros_like(gray)
cv2.drawContours(mask, target_contours, -1, 255, thickness=cv2.FILLED)

# 提取图表区域
extracted_charts = cv2.bitwise_and(image, image, mask=mask)

# 保存结果
cv2.imwrite(r'C:\Prarthana\PROJECTS\GitHub\MajorProject\Images\output\extracted_right_charts.jpg', extracted_charts)

提示:如果提取结果不准确,可调整area > 10000的面积阈值,或cx > width * 0.4的位置比例。

推荐方案

作为Python新手,优先尝试方法一,操作简单,无需复杂的轮廓分析,确定坐标后就能快速得到结果。

内容的提问来源于stack exchange,提问作者Prarthana Shankar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:57:35