亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

opencv python 模板匹配

魏明 / 1194人閱讀

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

Template Matching

理論

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

如果輸入圖像的大?。╓ 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()

與多個(gè)對(duì)象匹配的模板

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

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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42031.html

相關(guān)文章

  • OpenCV搞定騰訊滑塊驗(yàn)證碼

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

    loostudy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

魏明

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<