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

如何使用Python和图像处理技术准确查找图像中白色圆形的坐标

基于Python提取图像白色对象坐标方案

用到的依赖库为OpenCV和Numpy,适配你提供的黑底白对象高对比度场景,处理逻辑如下:

前置准备

安装依赖:
pip install opencv-python numpy
将目标图像保存到本地后替换代码里的路径即可运行。

实现代码

import cv2
import numpy as np

def get_white_object_coords(img_path):
    # 读取图像
    img = cv2.imread(img_path)
    # 转为灰度图简化计算
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 二值化筛选白色像素,阈值可根据白色亮度调整
    _, binary = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY)
    # 提取独立白色对象的轮廓
    contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    result = []
    for idx, cnt in enumerate(contours):
        # 单个对象外接矩形坐标
        x, y, w, h = cv2.boundingRect(cnt)
        result.append({
            "对象编号": idx+1,
            "中心坐标": (x + w//2, y + h//2),
            "外接矩形范围(左上x,左上y,右下x,右下y)": (x, y, x+w, y+h),
            "对象所有像素坐标": cnt.squeeze().tolist()
        })
    return result

# 调用示例,替换为本地图像路径
coords_img1 = get_white_object_coords("你的第一张图本地路径.png")
coords_img2 = get_white_object_coords("你的第二张图本地路径.png")

# 输出结果
print("第一张图白色对象坐标:", coords_img1)
print("第二张图白色对象坐标:", coords_img2)

补充说明

  • 若不需要区分单个对象,只需要全局所有白色像素的坐标,直接调用np.where(binary == 255)即可,返回值第一个数组为y坐标集合,第二个为x坐标集合,两个数组同索引位置的数值对应单个白色像素的坐标
  • 阈值220可灵活调整:白色偏暗时调低阈值,背景存在浅色噪声时调高阈值
  • 默认图像坐标原点为左上角,x轴向右、y轴向下,如需其他坐标系可自行做坐标映射转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:02