如何在Python中使用图像处理找到物体的直径?

2023-11-30

给定一张包含一些不规则物体的图像,我想找到它们各自的直径。

感谢这个答案,我知道如何识别物体。但是,是否可以测量图像中显示的物体的最大直径?

我已经调查过scipy-ndimage文档并没有找到专门的功能。

物体识别代码:

import numpy as np
from scipy import ndimage
from matplotlib import pyplot as plt

# generate some lowpass-filtered noise as a test image
gen = np.random.RandomState(0)
img = gen.poisson(2, size=(512, 512))
img = ndimage.gaussian_filter(img.astype(np.double), (30, 30))
img -= img.min()
img /= img.max()

# use a boolean condition to find where pixel values are > 0.75
blobs = img > 0.75

# label connected regions that satisfy this condition
labels, nlabels = ndimage.label(blobs)

# find their centres of mass. in this case I'm weighting by the pixel values in
# `img`, but you could also pass the boolean values in `blobs` to compute the
# unweighted centroids.
r, c = np.vstack(ndimage.center_of_mass(img, labels, np.arange(nlabels) + 1)).T

# find their distances from the top-left corner
d = np.sqrt(r*r + c*c)

# plot
fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(10, 5))
ax[0].imshow(img)
ax[1].hold(True)
ax[1].imshow(np.ma.masked_array(labels, ~blobs), cmap=plt.cm.rainbow)
for ri, ci, di in zip(r, c, d):
    ax[1].annotate('', xy=(0, 0), xytext=(ci, ri),
                   arrowprops={'arrowstyle':'<-', 'shrinkA':0})
    ax[1].annotate('d=%.1f' % di, xy=(ci, ri),  xytext=(0, -5),
                   textcoords='offset points', ha='center', va='top',
                   fontsize='x-large')
for aa in ax.flat:
    aa.set_axis_off()
fig.tight_layout()
plt.show()

Image: enter image description here


你可以使用skimage.measure.regionprops确定图像中所有区域的边界框。对于大致圆形的斑点,最小外接圆的直径可以近似为边界框的最大边。为此,您只需在脚本末尾添加以下代码片段:

from skimage.measure import regionprops

properties = regionprops(labels)
print 'Label \tLargest side'
for p in properties:
    min_row, min_col, max_row, max_col = p.bbox
    print '%5d %14.3f' % (p.label, max(max_row - min_row, max_col - min_col))

fig = plt.figure()
ax = fig.add_subplot(111)    
ax.imshow(np.ma.masked_array(labels, ~blobs), cmap=plt.cm.gist_rainbow) 
ax.set_title('Labeled objects')
plt.xticks([])
plt.yticks([])
for ri, ci, li in zip(r, c, range(1, nlabels+1)):
    ax.annotate(li, xy=(ci, ri), fontsize=24)
plt.show()

这是你得到的输出:

Label   Largest side
    1        106.000
    2         75.000
    3         79.000
    4         56.000
    5        161.000
    6         35.000
    7         47.000  

Labeled objects

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中使用图像处理找到物体的直径? 的相关文章

  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 对于没有空字符的字符串,如何计算 strlen?

    此代码返回 n 11 第 10 个和第 11 个字符为 和 这是如何运作的 strlen函数如何将其视为11个字符 在某些编译器中似乎将字符串长度视为 12 个字符 include
  • 将大量提交推送到 GitHub 会导致致命写入错误:文件描述符错误

    我使用 GitHub 来管理我的存储库 在尝试推送大型提交 1 5 GB 时遇到以下错误 error pack objects died of signal 9 fatal The remote end hung up unexpected
  • 从谷歌地图中的标记中删除默认的鼠标悬停工具提示

    我创建了一个用于显示标记信息窗口弹出窗口的应用程序 该应用程序工作正常 弹出窗口显示正确 但唯一的解决方案是 与鼠标悬停时的自定义信息窗口弹出窗口一起 带有 html 标签的默认弹出窗口是显示如下图所示 JSFiddle 谁能告诉我一些解决
  • angularjs:每个页面都有不同的元标记

    我已经使用 ruby on Rails 和 angularjs 使用 JS 和 Jquery 开发了网站 我只是想知道是否可以为 angularjs 中的每个页面使用不同的元标记 根据我的说法 任何爬虫都只会检测服务器端生成的元标记 因此
  • Azure Blob SAS 和 Cache-Control 确保资源得到缓存

    我们提供存储在 Azure Blob 容器上的私有资源 图像 文件等 安全性是使用以下方式实现的共享访问签名 为每个资源请求创建 例如 两个请求意味着两个不同的访问令牌 一般来说 安全 URL 由文件名和作为查询字符串传递的令牌组成 例如
  • 解决 n 皇后难题

    我刚刚解决了python中的nqueen问题 该解决方案输出在 nXn 棋盘上放置 n 个皇后的解决方案总数 但尝试使用 n 15 需要一个多小时才能得到答案 任何人都可以看一下代码并给我一些加速这个程序的技巧 一个新手Python程序员
  • 如何使用由 AJAX/PHP 填充的 DropDownList 中选定值的值

    我有两个下拉列表的表单 假设 A 和 B 当我从 A 中选择一个值时 将使用 AJAX 相应地填充 B 在同一页面中 我有一个按钮 按下该按钮时 会将下拉列表中所选项目的值发布到另一个 PHP 页面 我遇到的问题是 B 的选定值返回为空白
  • 如何检索 BigQuery 嵌套记录的动态嵌套键列表

    我的 ELT 工具在 bigquery 中导入我的数据 并自动生成 扩展动态嵌套键的架构 在下面的架构中 在properties 看起来像这样 如何获取重复记录的嵌套键列表 例如 当这些项目表示属性非空时 我可以按属性进行分组 我努力了 s
  • 无法解析以下类的超类型。请确保类路径中具有所需的依赖项:

    我无法编译 Android Kotlin 项目 我最近将应用程序从纯 Java 更新为 Kotlin 我只在单个 Activity 上完成了此操作 但我无法运行该项目 摇篮日志 e 无法解析以下类的超类型 请确保类路径中具有所需的依赖项 c
  • Gspread - 更改监听器?

    我当前运行一个守护程序线程 该线程获取所有单元格值 计算是否有更改 然后在循环中写出依赖单元格 即 def f while not event is set update event wait 15 Thread target f star
  • 不循环地排空或丢弃发电机?

    在 CSP 样式进程的异常处理程序中 我需要读取并丢弃通道的全部内容 以便允许其他正在阻塞的进程完成发送 该接口提供了一个用于接收的生成器 是否有比以下更快的方法来消耗和丢弃生成器的全部内容 for in chan pass 有一个稍微快一
  • Python openpyxl 读取直到空单元格

    我正在尝试从 Excel 文件中读取一列 直到它遇到空单元格 然后它需要停止读取 到目前为止我的代码 import openpyxl import os def main filepath os getcwd test xlsx wb op
  • 用于计算 c 中 e 的数字的应用程序

    谁能解释一下这段代码是如何计算的e作品 对于如此复杂的任务来说 看起来很简单 但我什至无法理解这个过程 它由 Xavier Gourdon 于 1999 年创建 int main int N 9009 a 9009 x 0 for int
  • 如何以编程方式从 InfoPath XSN 模板创建 InfoPath 表单

    我需要一个从 SharePoint 服务器上存在的 XSN 模板创建 InfoPath 实例表单的解决方案 我正在使用这种方法但这会提取服务器临时目录中的模板文件 我们可能没有写入权限 对此有更好的解决方案吗 您只需将 CAB 库更改为可以
  • Spring JdbcTemplate“插入..选择..”不起作用

    我正在尝试使用 Spring JdbcTemplate 执行以下 SQL INSERT INTO japan wht PIVOT 20427002 doc header text value date total amt is refund
  • 如何将事件处理程序附加到运行时创建的 ASP.NET 控件?

    大家早上好 我有一个与控件和事件处理有关的问题 假设我想创建一个LinkButton protected void loadLinkButton ContentPlaceHolder content ContentPlaceHolder t
  • block_in_place和spawn_blocking如何选择?

    我与 tokio 合作很多 并且一直在使用产卵阻塞用于阻止线程的代码 然后我看到了文档就地块看起来它是前者的无限制 发送 静态 版本 我的问题是 如果我已经在线程运行时 什么时候不建议使用 block in place 每种驱动同步码的方法
  • 偏态正态分布

    我们有位置 0 尺度 1 和形状 0 的偏斜正态分布 那么它与均值 0 和方差 1 的标准正态分布相同 但是如果我们更改形状参数 例如形状 5 则均值和方差也会发生变化 我们如何用不同的形状参数值来修复均值和方差 只要看看如何计算偏态正态分
  • 如何让 PropertyGrid 显示 SaveFileDialog?

    我有一个属性网格控件 我希望能够在用户将数据导出到新文件的过程中显示 SaveFileDialog 我可以轻松地将 OpenFileDialog 与 FileNameEditor 连接起来 但似乎没有用于保存文件的等效类 是否存在可以在 S
  • 如何在Python中使用图像处理找到物体的直径?

    给定一张包含一些不规则物体的图像 我想找到它们各自的直径 感谢这个答案 我知道如何识别物体 但是 是否可以测量图像中显示的物体的最大直径 我已经调查过scipy ndimage文档并没有找到专门的功能 物体识别代码 import numpy