OpenCV 中的矩阵乘法

Ammar Ali 2024年2月15日
  1. 在 OpenCV 中使用星号运算符进行矩阵乘法
  2. 在 OpenCV 中使用 multiply() 函数将两个矩阵相乘
OpenCV 中的矩阵乘法

本教程将讨论使用星号运算符和 OpenCV 的 multiply() 函数将两个矩阵相乘。

在 OpenCV 中使用星号运算符进行矩阵乘法

在 OpenCV 中,我们可以使用星号运算符将两个图像相乘。图像存储在 OpenCV 中的矩阵中,因此我们可以使用星号运算符将两个矩阵相乘。

在这种情况下,乘法将是直接的,大小为 (i x j) 的矩阵 X 将与大小为 (k x l) 的矩阵 Y 相乘,它将产生大小为 (i x l) 的第三个矩阵 Z。例如,让我们使用 NumPy 创建两张图像,一张黑色,一张红色,然后使用星号运算符将它们相乘,并使用 OpenCV 的 imshow() 函数显示它们。

请参阅下面的代码。

import cv2
import numpy as np

img_1 = np.zeros((512, 512, 3), dtype=np.float32)
img_2 = np.zeros((512, 512, 3), dtype=np.float32)

img_2[:, :] = (0, 0, 255)

img_3 = img_1 * img_2

cv2.imshow("Img1", img_1)
cv2.imshow("img2", img_2)
cv2.imshow("img3", img_3)
cv2.waitKey(0)

输出:

在 OpenCV 中使用星号运算符将两个矩阵相乘

乘法结果是黑色图像,因为第一个图像仅包含零值。

当与第二张图像相乘时,结果也将包含零值。BGR 三元组值 (0, 0, 0) 是黑色的颜色代码。

对于成功的乘法,一个矩阵的行数应该等于第二个矩阵的列数。

在 OpenCV 中使用 multiply() 函数将两个矩阵相乘

让我们使用 NumPy 创建两张图像,一张是黑色的,一张是红色的。

然后使用 multiply 相乘并使用 imshow() 函数 OpenCV 显示它们。

import cv2
import numpy as np

img_1 = np.zeros((212, 212, 3), dtype=np.float32)
img_2 = np.zeros((212, 212, 3), dtype=np.float32)

img_2[:, :] = (0, 0, 255)

img_3 = cv2.multiply(img_1, img_2)

cv2.imshow("Img1", img_1)
cv2.imshow("img2", img_2)
cv2.imshow("img3", img_3)
cv2.waitKey(0)

乘法结果是黑色图像,因为第一个图像仅包含零值。

当与第二张图像相乘时,结果也将包含零值。BGR 三元组值 (0, 0, 0) 是黑色的颜色代码。

输出:

在 OpenCV 中使用 multiply() 函数将两个矩阵相乘

上述两个例子的结果是一样的,但在某些情况下可能会发生变化。我们还可以更改 multiply() 函数的另外两个可选参数的值。

第一个可选参数用于设置输出矩阵的比例。默认情况下它的值为 1,但我们可以将其设置为任何数字。

第二个可选参数用于设置输出矩阵的数据类型。默认情况下,数据类型设置为 -1,这意味着输出矩阵将具有与输入矩阵相同的数据类型。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - OpenCV Image