[英]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.