【问题标题】:How do you multiply an openCV image by a 3 x 3 matrix?如何将 openCV 图像乘以 3 x 3 矩阵?
【发布时间】:2021-02-01 10:30:41
【问题描述】:

openCV h x w RGB 图像是一个形状为 (h, w, 3) 的数组。什么 numpy 矩阵运算将每个 [B G R] 像素值乘以 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]

【问题讨论】:

    标签: opencv rgb matrix-multiplication


    【解决方案1】:

    这是你要找的吗?

    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)

    【讨论】:

    • 或者只是A.dot(M)
    • 这些答案都没有给出想要的结果,我现在已经在添加到问题的代码中指定了。
    【解决方案2】:

    @Ananda 非常接近。期望的结果由下式给出

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

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 2015-12-22
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      相关资源
      最近更新 更多