首页 > 解决方案 > 如何将 openCV 图像乘以 3 x 3 矩阵?

问题描述

openCV hxw RGB 图像是一个形状为 (h, w, 3) 的数组。什么 numpy 矩阵运算将每个 [BGR] 像素值乘以 3 x 3 矩阵 M?图像 A 和矩阵 M 的期望结果 S 由下式给出

S = np.empty_like(A)
h, w, c = A.shape
for i in range(h):
    for j in range(w):
        BGR =  A[i, j]
        for k in range(c):
            S[i, j, k] = M[k][0] * BGR[0] +  M[k][1] * BGR[1] + M[k][2] * BGR[2]

标签: opencvrgbmatrix-multiplication

解决方案


这是你想要的?

import numpy as np

A = np.random.rand(10, 5, 3)
M = np.random.rand(3, 3)

S = np.einsum("ijk,ka->ija", A, M)

print(S.shape)

(10, 5, 3)


推荐阅读