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

使用Python绘制图像中心圆形却显示为直线的技术求助

问题:绘制中心白色圆形却出现白色直线的修复方案

错误原因分析

  • 坐标参数传反:核心问题是调用Dis函数时参数顺序错误,导致计算的不是当前点到图像中心的距离,而是错误的坐标点距离,最终画出直线而非圆形。
  • 语法错误:最后一行Show(Canvas))多了一个右括号,会触发语法报错。
  • 路径转义隐患:图像路径使用单反斜杠可能引发转义问题,比如\T、\L会被识别为特殊字符。

修正后的代码

from PIL import Image
import numpy as np

# 使用原始字符串避免路径转义问题
img = Image.open(r"C:\TMP\Lily1.jpg")
img = img.convert("L")
Img = np.array(img)

def Show(arr):
    img = Image.fromarray(arr, "L")
    img.show()

def Dis(x1, y1, x2, y2):
    return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5

# sx是图像宽度(x轴)中心,sy是图像高度(y轴)中心
sx = len(Img[0]) / 2
sy = len(Img) / 2

Canvas = np.array(Img, copy=True)

# a遍历y轴(行),b遍历x轴(列)
for a in range(int(sy * 2)):
    for b in range(int(sx * 2)):
        # 修正参数顺序:计算当前点(b,a)到中心(sx,sy)的距离
        if Dis(b, a, sx, sy) < 200:
            Canvas[a, b] = 255

# 修正多余括号
Show(Canvas)

关键修正说明

  1. 坐标参数修正:将Dis(sx, b, sy, a)改为Dis(b, a, sx, sy),当前点坐标为(x=b, y=a),图像中心坐标为(x=sx, y=sy),这样才能正确计算两点间距离,当距离小于200时将该点设为白色(255)。
  2. 语法错误修复:去掉Show(Canvas))中的多余右括号。
  3. 路径优化:改用原始字符串r"C:\TMP\Lily1.jpg",避免路径中的转义字符问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 23:22:26