【问题标题】:OPENCV mean value of image using only values under a threshold仅使用低于阈值的值的图像的 OPENCV 平均值
【发布时间】:2021-08-02 01:32:57
【问题描述】:

我从图像中的灰度图像 (​​0-255) 的行中获取强度值。我想应用像素居中,所以我从所有强度值中减去平均值。但我不想包含高于 200 的值。不迭代图像的最佳方法是什么?我尝试了cv2.mean(input, mask),但无法正确设置掩码。我还尝试了statistics 库中的mean(x for x in mid_line if x < 200),但结果均值不正确。

【问题讨论】:

  • Python 2.7 已经过时一年多了,而 Python 3 已经发布了将近 13 年……也许可以考虑在 Python 3 中开发新代码。
  • 我选择 python 2.7 是因为与一个更大的项目兼容,该项目已经在 2.7 上。但是感谢您的注意!

标签: python-2.7 opencv mean mask


【解决方案1】:

您可以使用cv2.threshold 创建掩码。您需要将所有高于 200 的值设置为 0,低于它的值设置为 255,因此需要将标志设置为 cv2.THRESH_BINARY_INV

import cv2

# assuming row has your values
ret, thresh = cv2.threshold(row, 200, 255, cv2.THRESH_BINARY_INV)
result = cv2.mean(row, thresh)

这只会计算小于等于 200 的像素的平均值。

【讨论】:

  • 这解决了我的问题。我计算了带和不带掩码的平均值,结果分别为 39 和 51,这是有道理的。谢谢!
猜你喜欢
  • 2020-03-16
  • 2021-05-20
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 2020-07-16
  • 2021-12-05
相关资源
最近更新 更多