【问题标题】:Detecting maximum pixel distance in a image检测图像中的最大像素距离
【发布时间】:2021-08-25 06:31:22
【问题描述】:

我是 python 和 pycharm 的初学者。我在做这个项目时有一个问题

您能告诉我如何编写如下代码来检测图像中的最大距离吗?我在上一篇文章中看到了一些使用MATLAB的代码,但我想知道如何使用python代码来制作。

我的目标是画一条线(就像下面帖子中的红线一样。)并在图像中标记它的距离。

发帖:http://georgepavlides.info/how-to-detect-the-maximum-pixel-distance-in-a-binary-image/

【问题讨论】:

  • “最大像素距离”的意思是要找到图像中相距最远的两个白色像素?你只是想要距离,还是这些像素的坐标?请在您的问题中包含相关信息 - 链接到源是可以的,只要相关位在这里以供将来参考。
  • 感谢您的回答。我按照你说的添加了信息。如果需要更多信息,请回复。
  • 您是否尝试过自己编写所需的 Python 代码?你在使用什么库?请分享您的努力以及您遇到问题的地方。
  • 我刚刚上传了代码。我使用 YOLOv5 模型提取了 best.pt 文件进行图像训练。基于此,我正处于使用 PyCharm 预测“数据/图像”中测试图像标签的阶段。接下来我想显示图像的最大距离,但是我想知道应该修改代码的哪一部分。我添加了另一个从我的模型中提取的图像。
  • @xXcCvV 你在 python 中更新的代码很大,里面有很多细节。我认为最好编辑它以进行发布,并且应该只写有问题的重要部分。通过这种方式,您可以更快地得到答案。祝你好运

标签: python image pycharm distance detection


【解决方案1】:

我写了这段代码,希望它能解决你的问题:

from PIL import Image
import math

im = Image.open('C:\\pic\\1.jpg') # Can be many different formats.
pix = im.load()
rgb_im = im.convert('RGB')

ls_white=[]

for i in range(rgb_im.size[0]):
    for j in range(rgb_im.size[1]):
        if(rgb_im.getpixel((i, j))!=(0,0,0)):
            ls_white.append((i,j))      

max_distance=-1

for i in range(len(ls_white)):
    for j in range(i+1,len(ls_white)):
        distance=math.dist(ls_white(i),ls_white(j))>max_distance
        if(distance>max_distance):
            max_distance=distance

我测试了 50px*30px(1500 像素)的图像,它工作正常。

提醒:对于大图像,它可能会占用您的内存,因此您必须进行一些优化并删除一些不纯的像素。

首先我得到任何颜色不等于黑色的像素,并将其位置保存到 ls_white 中。

其次我检查ls_white中第一个点到其他像素的距离,并为其他像素做,如果距离更大,将它保存到max_distance。

我建议从一张只有少量白点的小而简单的图片中尝试一下。

【讨论】:

  • 非常感谢您的回答 :) 我会应用您给我的代码。
  • 欢迎您。你会回答接受并投票吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2021-08-29
相关资源
最近更新 更多