2017-07-12 54 views
1

我在opencv和模板匹配方面有點麻煩,所以我希望這裏有人能夠幫助失去靈魂。cv2.minMaxLoc()中的Maxvalue?

所以作爲我使用的代碼的一部分,我有以下2行,我不太瞭解,以及我應該。

result = cv2.matchTemplate(edged, template, cv2.TM_CCOEFF) 
(_, maxVal, _, maxLoc) = cv2.minMaxLoc(result) 

根據我的理解,第一行將相關係數存儲在變量「result」中。這反過來又被傳遞到cv2.minMaxLoc(...),後者又產生了一個由(minVal,maxVal,minLoc,maxLoc)組成的4元素數組,我們只對maxVal和maxLoc感興趣。

在打印時MAXVAL的價值,我似乎在2,000,000之間是越來越值7,000,000根據模板,照明條件等

我的問題如下:

是什麼意思MAXVAL ?

maxVal的範圍是什麼?

什麼物理特性影響maxVal的值?

非常感謝您的幫助和指導!

回答

0

理想情況下,cv2.matchTemplate返回相關圖,本質上是一個灰度圖像,其中每個像素表示該像素的鄰域與模板匹配多少。

您建議我們只對maxLocmaxVal感興趣,但這不符合您在匹配模板時所考慮的相關類型。

現在,對於您的問題,minMaxLoc函數返回Matarray中的最大和最小強度值以及這些強度的位置。

MaxVal表示圖像中的最高強度,其中matchTemplate返回的圖像中的最高強度對應於圖像w.r.t中的最佳匹配。到您的模板(僅限特定的相關方法,對於TM_SQDIFFTM_SQDIFF_NORMED最好的匹配是minVal)。

由於matchTemplate返回的圖像是灰度圖,因此範圍應該取決於原始圖像,所以2000000至7000000對我來說看起來有點失序。

影響maxVal的唯一「物理特性」應該是模板與圖像的關聯程度,而不是其他任何東西。

希望它有幫助!