python - 用另一幅图像的 RGB 像素替换一幅图像中对应的白色像素
问题描述
我有 2 个图像 - 其中一个图像是二值化的,即每个像素是黑色或白色,另一个图像是标准 RGB 图像。两张图片大小相同。对于第一张图像中的所有白色像素,我想获取 RGB 图像中的相应像素并将它们附加到白色像素的位置。我怎样才能在 Python 中做到这一点?
解决方案
使用二值化图像作为像素坐标的二值索引:
import numpy as np
my_source_image = np.random.randint(0, 255, (480,640,3), np.uint8) # defined somewhere, assumed to have shape [H,W,3]
my_binarized_image = np.random.randint(0, 2, (480,640), np.uint8) # defined somewhere, assumed to have shape [H,W]
pixel_idx = my_binarized_image.astype(bool)
my_dest_image = np.zeros_like(my_source_image)
my_dest_image[pixel_idx,:] = my_source_image[pixel_idx]
请注意,我将目标图像定义为全零(如果您想要不同的背景颜色,只需初始化为颜色值),然后填写相关像素,而不是my_binarized_image
像您在问题中看到的那样重复使用,因为目标图像需要三个通道,而二值化图像只有一个。
或者,只要“背景”颜色为黑色,您就可以避免预分配第二张图像,而只需将第一张图像中的像素归零:
my_dest_image = my_source_image * pixel_idx[...,None]
([...,None]
在末尾添加了一个额外的维度pixel_idx
以使逐像素乘法成为可能)
推荐阅读
- python - 从标签条目中删除索引
- java - 将 SmartID Reader JNI 库添加到现有的 gradle 项目中
- angular - ag-Grid:找不到匹配的行模型 rowModelType 客户端
- scala - 为什么 scala 在有换行符且没有等号时评估类型别名?
- angular - ngx-formly ng-select formcontrol 更改发出的值
- python - Pandas Groupby 2 列中的至少 1 列匹配
- django - 如何在 Django 中使用带参数的反向 url 查找?
- c# - foreach 循环仅针对字符串中的某些字符
- python - 纸浆优化,无法向模型添加目标函数
- c# - 如何更好地构建功能以定位信息并影响应用程序中的许多不同图块?