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

