成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

opencv python 模板匹配

魏明 / 1136人閱讀

摘要:理論模板匹配是一種在較大的圖像中搜索和查找模板圖像位置的方法。將其作為矩形的左上角,并將,作為矩形的寬度和高度中的模板匹配與多個對象匹配的模板將不會提供所有的位置在這種情況下,我們將使用閾值

Template Matching

理論

模板匹配是一種在較大的圖像中搜索和查找模板圖像位置的方法。OpenCV帶有一個函數(shù)cv2.matchTemplate()用于此目的.它只是簡單地將模板圖像放在輸入圖像上(就像在2D卷積中那樣),并在模板圖像下對輸入圖像的模板和補丁進(jìn)行比較,在OpenCV中實現(xiàn)了幾種比較方法,它返回一個灰度圖像,每個像素表示該像素區(qū)域與模板的匹配程度.

如果輸入圖像的大小(W x H)且模板圖像的大?。╳ x h),則輸出圖像的大小為(W-w + 1,H-h + 1).獲得結(jié)果后,可以使用cv.minMaxLoc()函數(shù)查找最大/最小值的位置。將其作為矩形的左上角,并將(w,h)作為矩形的寬度和高度.

OpenCV中的模板匹配
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread("img.jpg",0)
img2 = img.copy()
template = cv2.imread("img_roi.png",0)
w, h = template.shape[::-1]

# All the 6 methods for comparison in a list
methods = ["cv2.TM_CCOEFF", "cv2.TM_CCOEFF_NORMED", "cv2.TM_CCORR",
            "cv2.TM_CCORR_NORMED", "cv2.TM_SQDIFF", "cv2.TM_SQDIFF_NORMED"]

for meth in methods:
    img = img2.copy()
    method = eval(meth)

    # Apply template Matching
    res = cv2.matchTemplate(img,template,method)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

    # If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
    if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
        top_left = min_loc
    else:
        top_left = max_loc
    bottom_right = (top_left[0] + w, top_left[1] + h)

    cv2.rectangle(img,top_left, bottom_right, 255, 2)

    plt.subplot(121),plt.imshow(res,cmap = "gray")
    plt.title("Matching Result"), plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(img,cmap = "gray")
    plt.title("Detected Point"), plt.xticks([]), plt.yticks([])
    plt.suptitle(meth)

    plt.show()

與多個對象匹配的模板

cv.minMaxLoc()將不會提供所有的位置.在這種情況下,我們將使用閾值.

import cv2
import numpy as np
from matplotlib import pyplot as plt

img_rgb = cv2.imread("img5.png")
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread("img_roi1.png",0)
w, h = template.shape[::-1]

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)

cv2.imshow("res",img_rgb)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42031.html

相關(guān)文章

  • OpenCV搞定騰訊滑塊驗證碼

    摘要:前言廢話滑塊驗證碼破解是一直都想搞的項目,畢竟多數(shù)網(wǎng)站都會采用滑塊驗證碼,于是最近在修改論文的閑暇之余把這事兒給解決了。 前言 廢話滑塊驗證碼破解是一直都想搞的項目,畢竟多數(shù)網(wǎng)站都會采用滑塊驗證碼,于是最近在修改論文的閑暇之余把這事兒給解決了。要搞現(xiàn)在的滑塊驗證碼繞不開圖像處理,圖像處理當(dāng)然是首推OpenCV-Python啦!當(dāng)然我的OpenCV非常菜(P.S.兩天速成不敢保證代碼質(zhì)量...

    loostudy 評論0 收藏0

發(fā)表評論

0條評論

魏明

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<