【问题标题】:How to overlap the white pixels from binary onto original image?如何将二进制中的白色像素重叠到原始图像上?
【发布时间】:2020-12-21 22:59:25
【问题描述】:

我有一张航拍图:

我能够得到河流部分河床的二值图像:

在应用距离变换和一些分割技术后,我能够获得平均河流线的二值图像:

我的问题是:如何覆盖河流线上的白色像素,使它们位于原始图像的“顶部”?

这是一个例子:

【问题讨论】:

  • 只需添加 2 张图片?
  • 它不起作用,我希望它们显示为情节,当我将它们加在一起时,河线不显示
  • 只有原图
  • 您是如何制作“结果示例”的?在我看来,您知道这可以做到吗?另外,在这里问一个是/否的问题很奇怪。你确定你不是想问如何做到这一点,而不是问是否可以做到?
  • 这是一个练习,来自图像处理课程,我没有答案,图像显示为示例

标签: python image-processing overlay


【解决方案1】:

这是解决您的问题的一种非常简单的方法。但它有效。

import cv2

original = cv2.imread('original.png')  # Orignal image
mask = cv2.imread('line.png')          # binary mask image
result = original.copy()

for i in range(original.shape[0]):
    for j in range(original.shape[1]):
        result[i, j] = [255, 255, 255] if mask[i, j][0] == 255 else result[i, j]


cv2.imwrite('result.png', result)   # saves modified image to result.png

结果

【讨论】:

  • 但是它给了我一个错误:“标量变量的索引无效”
  • 在这一行:result[i, j] = [255, 255, 255] if mask[i, j][0] == 255 else result[i, j]
  • 你使用了我的代码吗?它不应该给出任何错误。
  • 你的python版本是多少?
  • 是的,我做到了。现在是 3.8
猜你喜欢
  • 1970-01-01
  • 2017-07-19
  • 2019-12-16
  • 2012-01-15
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
相关资源
最近更新 更多