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