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