如何使用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
相关产品推荐
相关产品推荐

