簡體   English   中英

如何在 Python 中使用 OpenCV cornerSubPix()?

[英]How to use OpenCV cornerSubPix() in Python?

我正在嘗試獲取並繪制圖像中的角點。 現在,我有一個具有以下格式的元組列表:( (row,column,scale) (比例是因為我使用的是高斯金字塔),手動從 harrisCornerDetector 和 nonMaximumSupression 過程中獲得。 這個列表是featuresy1

我的代碼如下:

r,g,b=cv2.split(image)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
cv2.cornerSubPix( r, featuresy1, (5,5), (-1,1), criteria )

其中 image 是具有三個相同形狀的灰度圖像。 如您所見,我將cornerSubPix作為第二個參數提供了如下結構: [(x1,y1,scale1),(x2,y2,scale2),...,(xn,yn,scalen)]

這引發了以下錯誤:

cv2.cornerSubPix( r, featuresy1, (5,5), (-1,1), criteria )
TypeError: corners is not a numpy array, neither a scalar

出於這個原因,我想知道什么樣的類型、格式或結構應該有featuresy1來做cornerSubPix()工作。 這是我做錯的唯一一件事嗎? 沒有太多關於此的文檔。

謝謝!

您需要確保corners是具有 3 個維度(n, 1, 2) numpy 數組,其中 n 是拐角的數量。 它也必須是 float32 類型。

只需輸入

corners.shape

來驗證這一點。

輸入

corners.dtype

要檢查您是否使用 float32。

對我來說,看起來你的角落featuresy1是列表,它應該是一個 numpy 數組。 首先將其轉換為 numpy 數組:

featuresy1 = np.array(featuresy1)

Opencv 有一個易於理解的示例,可以幫助您

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM