国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用OpenCV進行模板匹配

這篇具有很好參考價值的文章主要介紹了用OpenCV進行模板匹配。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 引言

今天我們來研究一種傳統(tǒng)圖像處理領域中對象檢測和跟蹤不可或缺的方法——模板匹配,其主要目的是為了在圖像上找到我們需要的圖案,這聽起來十分令人興奮。

所以,事不宜遲,讓我們直接開始吧!

2. 概念

模板匹配的算法的核心十分簡單:它將模板與源圖像中的每個部分進行比較,逐像素滑動。結(jié)果是一個相似度的圖,該相似度圖中每個像素值反映了模板與源圖像中該位置的相似程度。

從本質(zhì)上講,它將模板在圖像上進行卷積,類似于卷積神經(jīng)網(wǎng)絡中使用卷積核的方式。通過這個過程,創(chuàng)建了一個新的圖像或矩陣,其中每個像素值表示模板與源圖像中相應區(qū)域之間的相似性。通過分析該結(jié)果圖像,我們可以識別峰值,這些峰值表示源圖像中存在模板圖像的精確位置。值得注意的是,模板匹配的實現(xiàn)可能會有所不同,主要是基于相似性的度量因方法各異而不同,這里不做擴展展開。

3. 舉個栗子

巴拉巴拉講了一堆概念性的文字,好多小伙伴會感覺到枯燥無味,基于此,我們來看我們的例子,首先我們引入我們需要的基礎庫,如下:

# Import libraries
import numpy as np
import matplotlib.pyplot as plt
from skimage.io import imread, imshow
from skimage.color import rgb2gray
from skimage.feature import match_template
from skimage.feature import peak_local_max

緊接著,我們來觀察我們的用例圖像,代碼如下:

original_image = imread('emojis.png')
plt.figure(figsize=(20,20))
plt.imshow(original_image)
plt.title('Original Image', fontsize=20, weight='bold')
plt.axis('off')
plt.show()

顯示圖像如下:
用OpenCV進行模板匹配
假設我們的任務安排為通過基本的圖像處理流程,從上圖中找到我們需要的心動模板。弄清楚了具體的需求,我們直接開始編碼吧!

4. 圖像灰度化

雖然模板匹配適用于彩色圖像,但讓我們簡化并將圖像轉(zhuǎn)換為灰度圖來減少計算量。
灰度化代碼如下:

# Convert the image to grayscale
gray_image = rgb2gray(original_image[:,:,:3])
plt.figure(figsize=(20,20))
plt.imshow(gray_image, cmap='gray')
plt.title('Grayscale Image', fontsize=20, weight='bold')
plt.axis('off')
plt.show()

結(jié)果如下:
用OpenCV進行模板匹配

5. 加載模板

現(xiàn)在,讓我們從灰度圖中截取一個心動的表情作為我們的目標模板,代碼如下:

template = gray_image[1330:1850,625:1140]
plt.figure(figsize=(10,10))
plt.imshow(template, cmap='gray')
plt.title('Template Image', fontsize=20, weight='bold')
plt.axis('off')
plt.show();

結(jié)果如下:
用OpenCV進行模板匹配

6 模板匹配

通過使用 skimage 庫中的match_template函數(shù) , 我們可以得到衡量模板圖和原圖的相似度的熱力圖,如下:

result = match_template(gray_image, template)
plt.figure(figsize=(10,10))
imshow(result, cmap='viridis')
plt.show();

結(jié)果如下:
用OpenCV進行模板匹配
上圖中顏色越鮮艷的區(qū)域顯示了和我們的模板相似度越高的區(qū)域,你注意到圖像中明亮的顏色區(qū)域形成的形狀了嗎?如果我們假設模板在源圖像中只找到一次,那么我們可以通過尋找具有最高值(~1.00)的像素來找到它的位置。代碼如下:

x, y = np.unravel_index(np.argmax(result), result.shape)
imshow(gray_image)
template_width, template_height = template.shape
rect = plt.Rectangle((y, x), template_height, template_width, color='y', 
                     fc='none')
plt.gca().add_patch(rect);

得到結(jié)果如下:
用OpenCV進行模板匹配

7. 設置容忍度

為了定位模板的多個匹配,我們可以通過設定相關性值的峰值的容忍度來實現(xiàn),代碼如下:

imshow(gray_image)
template_width, template_height = template.shape
for x, y in peak_local_max(result, threshold_abs=0.99):
    rect = plt.Rectangle((y, x), template_height, template_width, color='red', 
                         fc='none')
    plt.gca().add_patch(rect);

結(jié)果如下:
用OpenCV進行模板匹配

進而可以通過以下代碼,將結(jié)果畫到原圖,如下所示:

plt.figure(figsize=(20, 20))
plt.imshow(original_image)
plt.title('We found our heart eyes emojis!', fontsize=20, weight='bold', color='red')
template_width, template_height = template.shape
for x, y in peak_local_max(result, threshold_abs=0.99):
    rect = plt.Rectangle((y, x), template_height, template_width, color='red', 
                         fc='none')
    plt.gca().add_patch(rect);

最終結(jié)果如下:
用OpenCV進行模板匹配

8. 問題思考

  • 如果我們改變閾值會發(fā)生什么?降低閾值將給我們更多的匹配(但也會有更多的誤報),而提高閾值將使匹配更少,但可能更準確。
  • 放大模板怎么樣?模板越大,我們得到的匹配項就越少。這是因為匹配的大小必須與模板的大小幾乎相同。
  • 水平翻轉(zhuǎn)模板?這可能會導致沒有匹配,因為模板匹配對方向很敏感。
  • 更改圖像對比度?只要模板和原圖像發(fā)生相同的更改,匹配項就應該保持有效。然而,劇烈的變化可能會改變結(jié)果。

9. 總結(jié)

本文重點介紹了在傳統(tǒng)圖像處理中,如何利用模板匹配的方法來進行從表情包圖像中尋找心動表情模板的樣例,并給出了相應的代碼實現(xiàn)。由于是傳統(tǒng)方案,該方法的閾值選擇和泛化能力都有一定的局限性,但是學習其背后的原理可以幫助我們更好的理解相關理論概念。文章來源地址http://www.zghlxwxcb.cn/news/detail-497449.html

到了這里,關于用OpenCV進行模板匹配的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • opencv#27模板匹配

    opencv#27模板匹配

    ? ? ?例如給定一張圖片,如上圖大矩陣所示,然后給定一張模板圖像,如上圖小矩陣。 ? ? ?我們在大圖像中去搜索與小圖像中相同的部分或者是最為相似的內(nèi)容。比如我們在圖像中以灰色區(qū)域給出一個與模板圖像尺寸大小一致的區(qū)域,通過比較灰色區(qū)域中的內(nèi)容與模板中

    2024年01月23日
    瀏覽(21)
  • Opencv——圖像模板匹配

    Opencv——圖像模板匹配

    什么是模板匹配呢? 看到這里大家是否會覺得很熟悉的感覺涌上心頭!在人臉識別是不是也會看見?等等。 模板匹配可以看作是對象檢測的一種非?;镜男问健J褂媚0迤ヅ?,我們可以使用包含要檢測對象的“模板”來檢測輸入圖像中的對象。 參數(shù):(img: 原始圖像、

    2024年02月16日
    瀏覽(25)
  • 【OpenCV】第十五章: 模板匹配

    【OpenCV】第十五章: 模板匹配

    第十五章: 模板匹配 模板匹配就是在給定的圖片中查找和模板最相似的區(qū)域。 實現(xiàn)的方法是:將模板在圖片上滑動(從左向右,從上向下),遍歷所有滑窗,計算匹配度,將所有計算結(jié)果保存在一個矩陣種,并將矩陣中匹配度最高的值作為匹配結(jié)果。 一、單模板匹配 1、匹配函

    2024年02月02日
    瀏覽(38)
  • OPENCV C++(十二)模板匹配

    OPENCV C++(十二)模板匹配

    正常模板匹配函數(shù) ?這里0代表的是方法,一般默認為0就ok? img是輸入圖像 templatee是模板 resultmat是輸出 對于輸出的說明: 就是說result圖像中的每一個點的值代表了一次相似度比較結(jié)果。 ?如圖可知,模板在待測圖像上每次在橫向或是縱向上移動一個像素,并作一次比較計算

    2024年02月13日
    瀏覽(23)
  • 008 OpenCV matchTemplate 模板匹配

    008 OpenCV matchTemplate 模板匹配

    目錄 一、環(huán)境 二、模板匹配算法原理 三、代碼演示 本文使用環(huán)境為: Windows10 Python 3.9.17 opencv-python 4.8.0.74 cv.matchTemplate 是OpenCV庫中的一個函數(shù),用于在圖像中查找與模板匹配的特征。它的主要應用場景是在圖像處理、計算機視覺和模式識別等領域。 算法原理: cv.matchTempl

    2024年02月05日
    瀏覽(20)
  • OpenCV(11):模板匹配實例講解

    OpenCV(11):模板匹配實例講解

    在OpenCV中,模板匹配是一種圖像處理技術,用于在一個大的圖像中查找和定位一個小的目標圖像(也稱為模板)。 通俗而言,就是通過一張圖片找到和另一張圖片相似的部分。 從此章開始,opencv系列所有的之后更新的博客都會更注重實際應用,而不是僅僅簡單講解一個小方

    2024年02月04日
    瀏覽(20)
  • opencv 多角度模板匹配

    opencv 多角度模板匹配

    總結(jié)一下實現(xiàn)多角度模板匹配踩的坑 一 、多角度匹配涉及到要使用mask,首先opencv matchTemplateMask自帶的源碼如下: 可以看到使用用了四次dft來計算卷積,目標圖像要與mask卷三次,來計算目標圖像在模板區(qū)域內(nèi)的和,平方和。其中最后一次CCorr(I, mask2)可以省略掉,它跟CCorr(I

    2024年02月07日
    瀏覽(24)
  • 【OpenCV入門】第九部分——模板匹配

    【OpenCV入門】第九部分——模板匹配

    模板是被查找的圖像。模板匹配是指查找模板在原始圖像中的哪個位置的過程。 image: 原始圖像 templ: 模板圖像,尺寸必須小于或等于原始圖像 method: 匹配的方法 mask: (可選)掩模,只有 cv2.TM_SQDIFF和 c2.TM_CCORR_NORMED 支持此參數(shù),建議采用默認值 result: 計算得出的匹配結(jié)

    2024年02月09日
    瀏覽(16)
  • 圖像模板匹配 opencv c++實現(xiàn)

    圖像模板匹配 opencv c++實現(xiàn)

    用T表示模板圖像,I表示待匹配圖像,切模板圖像的寬為w高為h,用R表示匹配結(jié)果,匹配過程如下圖所示: 1、平方差匹配算法method=TM_SQDIFF 這類方法利用平法差來進行匹配,最好匹配為0,而若匹配越差,匹配值則越大 2、歸一化平方差匹配法method=TM_SQDIFF_NORMED 3、相關匹配法

    2024年02月04日
    瀏覽(19)
  • Opencv (C++)系列學習---模板匹配

    Opencv (C++)系列學習---模板匹配

    目錄 1.模板匹配的定義 2.API介紹 3.尋找最優(yōu)匹配位置(匹配后的配套操作) 4.具體代碼 ????????模板匹配就是在整個圖像區(qū)域發(fā)現(xiàn)與給定子圖像匹配的小塊區(qū)域,該匹配方法并不是基于直方圖,而是使用一個圖像塊在輸入圖像上進行“”滑動“”。(也就是在圖像上按照

    2024年02月08日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包