在 Python 中使用 OpenCV 的影象時刻
Python 使用 opencv
庫來執行各種計算機視覺任務。這些任務涉及非常有效地讀取和處理影象。
影象有許多屬性。opencv
庫提供了許多處理輪廓的函式。
輪廓與幫助提供有關沿影象中物件邊界的曲線及其相關形狀的資訊相關聯。輪廓的一個這樣的特徵稱為矩。
影象的時刻是根據計算機視覺定義的。它可以描述為給定影象的畫素強度的加權平均值。
我們可以使用影象矩找到有關區域、形狀方向及其質心的資訊。
本教程將討論在 Python 中使用 opencv
的影象時刻。
使用 moments()
函式在 Python 中使用 OpenCV 計算矩
在 Python 中,我們可以使用 opencv
庫中的 moments()
函式來使用影象時刻。使用此函式計算多邊形的三階矩,並返回陣列中的矩。
我們可以使用給定陣列中返回的值來計算形狀的質心等屬性。
現在讓我們看一個相同的例子。
import cv2
i = cv2.imread("img6.jpg")
img_g = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
ret, img = cv2.threshold(img_g, 127, 255, 0)
M = cv2.moments(img)
X = int(M["m10"] / M["m00"])
Y = int(M["m01"] / M["m00"])
cv2.circle(i, (X, Y), 5, (255, 255, 255), -1)
cv2.imshow("Output", i)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出:
在上面的示例中,我們使用影象矩找到圓的質心,矩是使用 moments()
函式計算的。
首先,我們讀取所需的影象。使用將影象轉換為所需顏色空間的 cvtColor
函式將影象轉換為灰度。
然後我們將閾值技術應用於該影象。這將有助於解決噪聲並過濾具有極值的畫素。
我們使用 threshold()
函式並在函式內提供閾值。在我們的例子中,大於 127 的每個畫素都被更改為 255,小於 12 的畫素被設定為零。
然後我們計算影象矩。我們使用返回陣列中的值來查詢圓心的位置。
使用 circle()
函式在原始影象上繪製質心。此函式在質心座標處建立一個小圓圈。
顯示最終輸出,我們使用 waitKey()
和 destroyAllWindows()
函式等待使用者按下某個鍵,然後自動關閉輸出視窗。
まとめ
本教程討論了計算機視覺領域的影象矩以及如何使用 Python 中的 opencv
庫計算矩。為此,我們使用了 opencv
庫中的 moments()
函式。
矩以陣列的形式返回,可用於查詢形狀的方向、面積和質心等細節。我們在示例中計算圓的質心。
程式碼有圖解,每一行都有解釋。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn