【问题标题】:OpenCV Each pixel in the return image from adaptiveThreshold function is value 255OpenCV从adaptiveThreshold函数返回图像中的每个像素都是值255
【发布时间】:2020-01-25 01:25:02
【问题描述】:

我将自适应阈值应用于灰度图像,并且我想将正常阈值应用于该函数的返回图像。这不起作用,因为返回图像中的每个像素都设置为 255。我不明白为什么会这样,因为 imshow 会按照您的预期显示自适应阈值的返回图像,并且它会响应参数的变化。那么为什么每个像素都是 255,为什么我无法将该图像放入正常阈值函数中得到结果?

我使用的是 opencv 4.0.0。

image = cv2.imread('../photos/neptune.jpg', 0)
th2 = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 3, 2)

# doesnt matter what second parameter is.
_, thresh = cv2.threshold(th2, 200, 255, cv2.THRESH_BINARY)

【问题讨论】:

  • 能否将您的 neptune.jpg 上传到 imgur 以便我们复制代码?
  • “adaptiveThreshold 函数返回图像中的每个像素的值都是 255”,是的,这就是阈值应该做的。它使图像成为来自[0...255] 的二值图像(灰度)。试试thresh = cv2.threshold(th2, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

标签: python opencv image-thresholding adaptive-threshold


【解决方案1】:

cv2.adaptiveThreshold 函数产生一个黑白图像作为输出。黑白图像已经是二值的,通过二值过滤器运行它是多余的,但是当你这样做时,你可以获得以下之一:相同的、全黑的或全白的图像。

【讨论】:

  • 完全没有想到这一点。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2015-11-21
  • 2011-12-15
  • 1970-01-01
相关资源
最近更新 更多