作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有四个像这样的图像数组:
image1 = np.array([
[
# [R G B]
# | | |
[1, 2, 3], [11, 22, 55], [12, 45, 56]
],
[
[1, 2, 3], [56, 55, 13], [12, 45, 56]
],
[
[11, 22, 55], [56, 55, 13], [12, 45, 56]
],
])
image2 = np.array([
[
[91, 72, 33], [111, 222, 155], [212, 245, 156]
],
[
[100, 200, 113], [56, 255, 213], [112, 145, 156]
],
[
[113, 223, 255], [156, 55, 113], [212, 245, 156]
],
])
image3 = np.array([
[
[9, 2, 3], [111, 222, 255], [22, 25, 16]
],
[
[10, 20, 13], [156, 25, 23], [12, 45, 16]
],
[
[13, 23, 155], [56, 255, 13], [222, 235, 216]
],
])
image4 = np.array([
[
[29, 22, 23], [111, 222, 255], [223, 125, 216]
],
[
[210, 220, 13], [156, 252, 232], [122, 145, 216]
],
[
[123, 232, 155], [56, 255, 213], [222, 235, 216]
],
])
对于每一行和每一列,我想计算图像数组的 Red & Green & Blue
channel 之和的最大 RGB
值,并使用最大值来构建一个新的图像数组。
所以在尝试了下面的代码之后,它得到了重复的索引,因为在每一行和每一列中,三个图像数组的最大 RGB
可能是重复的。但我只想获取第一个匹配索引。
array = np.array([image1, image2, image3, image4])
array_sum = array.sum(axis=3)
# array_sum_max_index = array_sum.argmax(axis=0)
indices = np.where(array_sum == array_sum.max(axis=0))
print(indices)
输出
(array([1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3]), array([0, 0, 2, 0, 2, 0, 1, 1, 1, 2, 2]), array([0, 2, 0, 1, 2, 1, 0, 1, 2, 1, 2]))
这个link里面也有类似的回答,但它不能解决我的问题。那么第一次匹配时如何获取索引。
编辑:
实际输入图片数量超过32
。 (涉及 numpy.choose()
的解决方案可能因此无法工作)
最佳答案
(提出不使用 numpy.choose()
的替代解决方案,因为 OP 已经指出 32
选择数组的约束在 的情况下numpy.choose()
是一个问题)
array = np.array([image1, image2, image3, image4])
array_sum = array.sum(axis=3)
array_sum_max_index = array_sum.argmax(axis=0)
m = 3 # Number of pixel rows
n = 3 # Number of pixel columns
array[array_sum_max_index, np.arange(m)[:,None,], np.arange(n)[None,:]]
输出:
array([[[ 91, 72, 33],
[111, 222, 255],
[212, 245, 156]],
[[210, 220, 13],
[156, 252, 232],
[122, 145, 216]],
[[113, 223, 255],
[ 56, 255, 213],
[222, 235, 216]]])
关于python - Numpy - 如何从 4 个输入图像构建一个新图像,选择最亮的像素 (max(R+G+B)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65898526/
我是一名优秀的程序员,十分优秀!