【问题标题】:Python- Trying to find image with largest green circlePython-试图找到具有最大绿色圆圈的图像
【发布时间】:2012-12-03 13:19:25
【问题描述】:

我收到了一个包含数百张图片的文件。每个图像都包含一个白色背景上的绿色圆圈。 我需要使用 python 程序确定哪个图像包含直径最大的圆。 这些图像中的每一个都具有相同的尺寸,因此我相信也可以通过找到具有最多绿色像素的图像来确定答案。我知道 scipy 可以处理图像,但是当我尝试运行以下代码时:

from scipy import misc

image=open("/Users/Myname/Desktop/greencircles/image_0.png", "r")
misc.imread(image)

...它给出错误“模块”没有属性“imread” A 我朝着正确的方向前进?我已经搜索了一段时间的解决方案,但无济于事。

感谢您的建议!

【问题讨论】:

  • 我建议使用 PIL 的直方图
  • 我有 python 3,我知道 3.x 没有 PIL
  • 这太奇怪了。 ["module" has no attribute "imread"] 意味着 scipy.misc 根本没有 "imread" 方法!您是否正确安装了 Scipy?
  • 原来我需要安装 PIL...我不知道为什么,但它不再崩溃了。所以我有 misc.imread(image),但现在我不知道如何找到哪个屏幕最多。
  • 您更有可能在scipy.ndimage.imread 之后。为了帮助调试您的问题,请在导入行之后添加语句 print misc 并包含完整的输出。

标签: python image image-processing python-3.x scipy


【解决方案1】:

由于您所拥有的只是白色区域上的绿色区域,因此您需要做的就是将非白色像素相加(对偶也可以正常工作)。在这里使用 scipy 也没多大意义,PIL 就足够了,颜色在你的任务中也不重要。假设典型的颜色范围为 [0, 255]:

from PIL import Image, ImageOps

x = ImageOps.grayscale(Image.open('input.png'))
print sum(1 for xi in x.getdata() if xi != 255)

【讨论】:

    【解决方案2】:

    ‛imread‛直接读取文件路径

    【讨论】:

    • import scipy from scipy import misc misc.imread("/Users/myname/Desktop/greencircles/image_0.png") 仍然得到属性错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2020-12-12
    • 2019-01-09
    相关资源
    最近更新 更多