Opencv+python模板匹配

我們經常玩匹配圖像或者找相似,opencv可以很好實現這個簡單的小功能。

模板是被查找目標的圖像,查找模板在原始圖像中的哪個位置的過程就叫模板匹配。OpenCV提供的matchTemplate()方法就是模板匹配方法,其語法如下:

?result = cv2.matchTemplate(image, templ, method, mask)

參數說明:

image:原始圖像。
templ:模板圖像,尺寸必須小于或等于原始圖像。
method:匹配的方法,可用參數值如表10.1所示。
mask:可選參數。掩模,只有cv2.TM_SQDIFF和cv2.TM_CCORR_NORMED支持此參數,建議采用默認值。
返回值說明:
result:計算得出的匹配結果。如果原始圖像的寬、高分別為W、H,模板圖像的寬、高分別為w、h,result就是一個W-w+1列、H-h+1行的32位浮點型數組。數組中每一個浮點數都是原始圖像中對應像素位置的匹配結果,其含義需要根據method參數來解讀。
在模板匹配的計算過程中,模板會在原始圖像中移動。模板與重疊區域內的像素逐個對比,最后將對比的結果保存在模板左上角像素點索引位置對應的數組位置中
OpenCV的matchTemplate函數是用來在一幅圖像中尋找另一幅圖像的匹配的。在匹配過程中,可以選擇不同的匹配方法,也就是method參數。常用的method參數有以下幾種:
- cv2.TM_SQDIFF:平方差匹配法,最簡單的匹配方法,計算平方差和,值越小越匹配。
- cv2.TM_SQDIFF_NORMED:標準平方差匹配法,同樣計算平方差和,但是會對結果進行標準化處理。注意使用距離來計算被匹配圖像一定要小于原圖像
- cv2.TM_CCORR:相關性匹配法,#,值越大越匹配。
- cv2.TM_CCORR_NORMED:標準相關性匹配法,對結果進行標準化處理,返回值越大表示匹配程度越高,越小表示匹配程度越低。
該參數使用的是歸一化相關系數匹配模式,
返回的是匹配圖像和模板圖像之間的相關系數,取值范圍在 0 到 1 之間,1 表示完美匹配,0 表示沒有匹配。
- cv2.TM_CCOEFF:相關系數匹配法,計算兩個圖像的相關系數,值越大越匹配。
- cv2.TM_CCOEFF_NORMED:標準相關系數匹配法,對結果進行標準化處理。

?假設原圖如下:

需要找出的圖是西瓜

?

代碼:


import cv2
import matplotlib.pyplot as plt
import numpy as np
# 讀取圖像
image = cv2.imread("./image/20240626-3.jpg") #多圖
grayImg = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
matchImg = cv2.imread("./image/20240626-4.jpg", 0) #匹配的圖# 模板匹配
result = cv2.matchTemplate(grayImg, matchImg, cv2.TM_CCORR_NORMED)
threshold = 0.999# 找到匹配的位置
loc = np.where(result >= threshold)# 繪制矩形
for pt in zip(*loc[::-1]):  # 交換坐標順序cv2.rectangle(image, pt, (pt[0] + matchImg.shape[1], pt[1] + matchImg.shape[0]), (0, 0, 255), 2)# 顯示結果
# 使用 OpenCV 顯示
cv2.imshow('Matched Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()# 或者使用 Matplotlib 顯示(如果需要)
# plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))  # 注意:將 BGR 轉換為 RGB 以供 Matplotlib 顯示
# plt.show()

結果:

1、當閾值threshold = 0.999,因為我匹配圖就是這個截圖,哈哈哈哈

?

2、當閾值threshold = 0.98

3?、當閾值threshold = 0.9

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35443.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35443.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35443.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用go語言來完成復雜excel表的導出導入

使用go語言來完成復雜excel表的導出導入(一) 1.復雜表的導入 開發需求是需要在功能頁面上開發一個excel文件的導入導出功能,這里的復雜指定是表內數據夾雜著一對多,多對一的形式,如下圖所示。數據雜亂而且對應不統一。…

中國90米分辨率可蝕性因子K數據

土壤可蝕性因子(K)數據,基于多種土壤屬性數據計算,所用數據包括土壤黏粒含量(%)、粉粒含量(%)、砂粒含量(%)、土壤有機碳含量(g/kg)、…

[DALL·E 2] Hierarchical Text-Conditional Image Generation with CLIP Latents

1、目的 CLIP DDPM進行text-to-image生成 2、數據 (x, y),x為圖像,y為相應的captions;設定和為CLIP的image和text embeddings 3、方法 1)CLIP 學習圖像和文本的embedding;在訓練prior和decoder時固定該部分參數 2&a…

開放式耳機什么牌子好一點?親檢的幾款開放式藍牙耳機推薦

不入耳的開放式耳機更好一些,不入耳式耳機佩戴更舒適,適合長時間佩戴,不會引起強烈的壓迫感或耳部不適。不入耳式的設計不需要接觸耳朵,比入耳式耳機更加衛生且不挑耳型,因此備受運動愛好者和音樂愛好者的喜愛。這里給…

MySQL中ALTER LOGFILE GROUP 語句詳解

在 MySQL 的 InnoDB 存儲引擎中,ALTER LOGFILE GROUP 語句用于修改重做日志組(redo log group)的配置。重做日志是 InnoDB 用來保證事務持久性的一個關鍵組件,它們用于在系統崩潰后恢復數據。 InnoDB 支持多個重做日志組&#xf…

周轉車配料揀貨方案

根據周轉車安裝的電子標簽,被懸掛的掃碼器掃到墨水屏顯示的二維碼,投屏發送配料揀貨的數據。 方便快捷分揀物料

20240625(周二)歐美股市總結:標普納指止步三日連跌,英偉達反彈6.8%,谷歌微軟新高,油價跌1%

美聯儲理事鮑曼鷹派發聲,若通脹沒有持續改善將支持加息,加拿大5月CPI重新加速,對加拿大央行7月降息構成阻礙。美股走勢分化,道指收跌近300點且六日里首跌,英偉達市值重上3.10萬億美元,芯片股指顯著反彈1.8%…

想要用tween實現相機的移動,three.js渲染的canvas畫布上相機位置一點沒動,如何解決??

🏆本文收錄于「Bug調優」專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&&…

linux 批量mv批量cp | 批量復制粘貼剪切

一、【問題描述】 cp 和 mv這種基本命令,多對一是可以做的 比如 cp /conf/* /despath mv /conf/* /path/bak/ 但是一對多會報錯,加-r參數也會報錯,而且會有問題,不建議這么做,找一臺測試機器你會發現加了-r甚至復制…

每日新聞掌握【2024年6月26日 星期三】

2024年6月26日 星期三 農歷五月廿一 大公司/大事件 OpenAI將終止對中國提供API服務 從6月24日晚間開始,已有多名用戶收到了來自OpenAI的郵件。該郵件表示,“我們的數據顯示您的組織來自OpenAI目前不支持的地區的API流量。”郵件進一步表示,…

高內聚低耦合【代碼:ShoppingCart(一個類中提供多種操作購物車的方法體現高內聚)支付方式接口(信用卡類、微信支付類實現支付接口 體現低耦合)】

高內聚低耦合 ?內聚指的是:?個模塊中各個元素之間的聯系的緊密程度,如果各個元素(語句、程序段)之間的聯系程度越?,則內聚性越?,即 “?內聚”。 低耦合指的是:軟件中各個層、模塊之間的依賴關聯程序越低越好。修…

第1章 物聯網模式簡介---獨特要求和體系結構原則

物聯網用例的獨特要求 物聯網用例往往在功耗、帶寬、分析等方面具有非常獨特的要求。此外,物聯網實施的固有復雜性(一端的現場設備在計算上受到挑戰,另一端的云容量幾乎無限)迫使架構師做出艱難的架構決策和實施選擇。可用實現技…

【自動調參】年化29.3%,最大回撤18.5%?:lightGBM的參數優化

原創文章第570篇,專注“AI量化投資、世界運行的規律、個人成長與財富自由"。 研報復現繼續:【研報復現】年化27.1%,人工智能多因子大類資產配置策略之benchmark 昨天調了一版參數,主要是lambda_l1, lambda_l2,防…

Vmvare12安裝CentOS7.6

Vmvare12安裝 注意事項 安裝完成以后有這兩個虛擬網卡。 CentOS官網鏡像地址 https://www.centos.org/download/mirrors/Vmvare安裝CentOS7.6 創建虛擬機 安裝CentOS7.6 選擇桌面版 磁盤分區 上述是確認使用自動分區。 設置密碼 設置license information 歡迎頁面 CentOS7…

使用Python實現網頁數據獲取與處理:以財經新聞為例

在現代數據驅動的世界中,獲取并處理豐富的網頁數據是非常重要的技能。本文將介紹如何使用Python編寫一個程序,自動獲取財經新聞數據并進行處理。這不僅可以幫助我們快速獲取最新的財經信息,還可以為后續的數據分析和研究提供支持。 環境準備…

寶蘭德受邀出席華為開發者大會2024,攜手共繪基礎軟件新篇章

6月21日-23日,華為開發者大會(HDC 2024)在東莞松山湖舉行,作為全球開發者的年度盛會,本次大會匯聚了眾多業界精英與前沿技術。華為分享了HarmonyOS、盤古大模型、昇騰AI云服務、GaussDB數據庫、自研倉頡編程語言等最新…

微信小程序錄音

微信小程序的錄音功能通過一組API來實現,主要涉及錄音管理器(RecorderManager)的使用。下面是詳細的實現步驟和代碼示例: 初始化錄音管理器 首先需要獲取錄音管理器的實例,可以通過 wx.getRecorderManager() 方法來獲…

【IM即時通信 功能介紹】客戶端用戶在線狀態訂閱

本文檔旨在介紹客戶端用戶在線狀態訂閱功能,該功能允許開發者通過 SDK 接口實時監控和接收指定用戶的在線或離線狀態變更通知。這一功能對于需要實時交流、狀態同步或用戶活動監控的應用場景至關重要。 功能特點 實時狀態通知 跨平臺通知:訂閱成功后&…

使用 MediaPipe 實現實時手部追蹤和手勢識別 | Rerun展示

點擊下方卡片,關注“小白玩轉Python”公眾號 在本文中,我將展示一個使用 MediaPipe Python 和 Rerun SDK 進行手部追蹤和手勢識別的示例。如果您有興趣深入了解并擴展您的知識,我將指導您如何安裝 MediaPipe Python 和 Rerun SDK 來進行手部追…

深入Scala的變量聲明與類型推斷:語法糖下的智能推導

Scala是一種靜態類型語言,以其強大的類型推斷系統而聞名。變量聲明和類型推斷是Scala編程中的基礎概念,它們共同簡化了代碼的編寫并提高了開發效率。本文將深入探討Scala中變量聲明的語法規則和類型推斷的工作原理。 1. Scala靜態類型的優越性 靜態類型…