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

如何使用Python定位图像中已绘制同心圆环的中心坐标

同心圆环圆心坐标Python实现方案

前置依赖安装

执行以下命令安装需要的第三方库:
pip install opencv-python numpy


场景1:处理黑白PNG格式图像

利用对称图形的前景像素重心与几何中心重合的特性,通过图像矩计算重心即可得到圆心坐标,精度可达像素级:

import cv2
import numpy as np

# 读取黑白PNG图像,参数0表示直接以灰度模式读取
img = cv2.imread("你的圆环图像路径.png", 0)
# 二值化处理,区分前景(圆环,值255)和背景(值0),阈值可根据实际图像明暗调整
ret, binary = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 计算图像矩
moments = cv2.moments(binary)
# 计算圆心坐标,cX为横轴坐标,cY为纵轴坐标
cX = int(moments["m10"] / moments["m00"])
cY = int(moments["m01"] / moments["m00"])

print(f"圆心坐标为:({cX}, {cY})")

如果圆环存在噪声干扰,可以先添加形态学开运算步骤过滤噪点再计算矩。


场景2:处理对应的ASCII图像

将ASCII文本按行读取后,统计所有属于圆环的字符坐标的平均值即为圆心:

# 读取ASCII图像文件,按行存储为列表
with open("你的ASCII图像路径.txt", "r", encoding="utf-8") as f:
    ascii_lines = f.read().splitlines()

x_coords = []
y_coords = []
# 遍历所有行和列,收集圆环字符的坐标
for y, line in enumerate(ascii_lines):
    for x, char in enumerate(line):
        # 假设非空格字符代表圆环部分,可根据实际ASCII的字符规则修改判断条件
        if char != " ":
            x_coords.append(x)
            y_coords.append(y)

# 计算平均值得到圆心
cX = round(sum(x_coords)/len(x_coords))
cY = round(sum(y_coords)/len(y_coords))

print(f"圆心坐标为:({cX}, {cY})")

如果需要更高精度,可以保留浮点型的坐标结果,不用取整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:00