国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opencv python 模板匹配

魏明 / 1127人閱讀

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

Template Matching

理論

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

如果輸入圖像的大小(W x H)且模板圖像的大小(w x h),則輸出圖像的大小為(W-w + 1,H-h + 1).獲得結果后,可以使用cv.minMaxLoc()函數查找最大/最小值的位置。將其作為矩形的左上角,并將(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)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42031.html

相關文章

  • OpenCV搞定騰訊滑塊驗證碼

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

    loostudy 評論0 收藏0

發表評論

0條評論

魏明

|高級講師

TA的文章

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