OpenCV 中的矩阵乘法
Ammar Ali
2024年2月15日
本教程将讨论使用星号运算符和 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)
输出:
乘法结果是黑色图像,因为第一个图像仅包含零值。
当与第二张图像相乘时,结果也将包含零值。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)
是黑色的颜色代码。
输出:
上述两个例子的结果是一样的,但在某些情况下可能会发生变化。我们还可以更改 multiply()
函数的另外两个可选参数的值。
第一个可选参数用于设置输出矩阵的比例。默认情况下它的值为 1
,但我们可以将其设置为任何数字。
第二个可选参数用于设置输出矩阵的数据类型。默认情况下,数据类型设置为 -1
,这意味着输出矩阵将具有与输入矩阵相同的数据类型。
作者: Ammar Ali