多目標輪廓匹配

前面我們使用模板匹配,得到的結果都是一個圖,那么如果我們圖片中有許多我們的目標,那么該如何找出來呢?

如上我們圖片中有許多箭頭和我們的模板一致,只不過方向不對,那么該如何匹配呢?

圖片和模板處理

ref=cv2.imread('jiantou.jpg')
cv2.imshow('jiantou', jt)
cv2.waitKey(0)
h,w= ref.shape[:2]yuan=cv2.imread('yuan.jpg')
yuan1=yuan.copy()
cv2.imshow("yuan", yuan)
cv2.waitKey(0)

閾值選擇

result = cv2.matchTemplate(ref, yuan1, cv2.TM_CCOEFF_NORMED)
threshold =0.9
loc = np.where(result >= threshold)

我們得到的results是一個包含許多匹配度的,如何我們這里使用一個閾值來選擇,之前我們選擇的都是那個最大的。現在我們選匹配度較好的幾個。(where具體看我主頁單文章解釋)

這里result是一個矩陣,表示以哪一個點做左上角時的匹配度。如何where可以返回這個點的位置。

畫出

for pt in zip(*loc[::-1]):cv2.rectangle(yuan,pt,(pt[0]+w,pt[1]+h),(0,0,255),1)

現在我們值畫出了同方向的,那么我們該如何檢測不同方向的呢?

旋轉

rotated_image1 =np.rot90(ref, k=-1)
rotated_image1 =np.rot90(ref, k=1)

這里k=-1順時針,k=1為逆時針

這是我們可以把箭頭旋轉一下,如何再進行模板匹配。(關于zip我另一篇文章專門寫)

rotated_image1 =np.rot90(ref, k=-1)
result1 = cv2.matchTemplate(rotated_image1, yuan1, cv2.TM_CCOEFF_NORMED)loc1 = np.where(result1 >= threshold)for pt in zip(*loc1[::-1]):cv2.rectangle(yuan,pt,(pt[0]+w,pt[1]+h),(0,0,255),1)
cv2.imshow('yuan', yuan)
cv2.waitKey(0)rotated_image2 =np.rot90(ref, k=1)
cv2.imshow("yuan1", rotated_image2)
cv2.waitKey(0)
result2 = cv2.matchTemplate(rotated_image2, yuan1, cv2.TM_CCOEFF_NORMED)loc2 = np.where(result2 >= threshold)for pt in zip(*loc2[::-1]):cv2.rectangle(yuan,pt,(pt[0]+w,pt[1]+h),(0,0,255),1)cv2.imshow("yuan", yuan)
cv2.waitKey(0)

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

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

相關文章

【C++】簡單介紹lambda表達式

各位大佬好,我是落羽!一個堅持不斷學習進步的學生。 如果您覺得我的文章還不錯,歡迎多多互三分享交流,一起學習進步! 也歡迎關注我的blog主頁: 落羽的落羽 文章目錄一、 什么是lambda表達式二、 表達式語法三、lambd…

磁共振成像原理(理論)4:自由進動和弛豫 (Free Precession and Relaxation)

當磁化自旋系統被射頻脈沖擾動而偏離其熱平衡態后,一旦移除外部激勵并給予足夠時間,系統將根據熱力學定律返回平衡態。這一過程包含三個特征現象: (a) 自由進動——宏觀磁化矢量 (M?\vec{M}M) 繞( B0?\vec {B_0}B0?? )場的進動&#xff1…

ubuntu 20.04 安裝spark

安裝openjdk21 下載 wget https://download.java.net/openjdk/jdk21/ri/openjdk-2135_linux-x64_bin.tar.gz解壓 tar -xvf openjdk-2135_linux-x64_bin.tar.gzsudo mv jdk-21/ /opt/jdk-21/設置環境變量 echo export JAVA_HOME/opt/jdk-21 | sudo tee /etc/profile.d/java2…

第三方區塊鏈應用測評:【多簽錢包合約安全評估_閾值簽名機制與私鑰存儲安全性測試】

閾值簽名機制安全測試密碼學審計 采用門限簽名方案(TSS)的多簽錢包需驗證其閾值BLS簽名或ECDSA簽名算法的正確性。測試重點包括:分布式密鑰生成(DKG)過程的保密性(無密鑰信息泄露)、簽名碎片驗證…

大模型處理長文檔的挑戰和解決方案?

當前,AI 應用正處于極速發展階段,大語言模型(LLM)與檢索增強生成(RAG)系統已成為構建智能問答、知識管理等高階 AI 應用的核心引擎,被廣泛應用于金融分析、學術研究、企業合規等多個領域。然而&…

JavaWeb--day1--HTMLCSS

(以下內容全部來自上述課程及課件) web開發介紹 1. 什么是web? Web:全球廣域網,也稱為萬維網,能夠通過瀏覽器訪問的網站。 2. Web網站的工作流程 3. Web標準 Web標準也稱為網頁標準,由一系列的標準組成&#xf…

OpenEuler安裝gitlab,部署gitlab-runner

目錄 一、安裝gitlab 二、安裝部署docker設置源 三、下載部署runner ?編輯 四、構建CI/CD 一、安裝gitlab 1.查看OpenEuler版本 [rootlocalhost ~]# cat /etc/os-release NAME"openEuler" VERSION"24.03 (LTS-SP1)" ID"openEuler" VERSI…

實戰項目-----在圖片 hua.png 中,用紅色畫出花的外部輪廓,用綠色畫出其簡化輪廓(ε=周長×0.005),并在同一窗口顯示

實戰項目實現以下功能:對圖片 hua.png 進行輪廓提取,并在同一窗口中完成以下兩個繪制操作:用紅色畫出花的外部輪廓(即最外層輪廓)用綠色畫出該輪廓的近似多邊形,其中近似精度參數 ε 設置為輪廓周長的 0.00…

開源鴻蒙北向框架開發:系統服務理論詳解

系統服務的啟動 基本可以認為:OpenHarmony 的系統服務進程都是“由 init 直接或間接拉起”的。 直接方式: init 按 /system/etc/init/.cfg 啟動可執行(如 /system/bin/sa_main、/system/bin/samgr 等),這些進程的 PPid…

龍虎榜——20250909

上證指數今天縮量收陰線,跌破10日均線,目前日線總體處于高位寬幅震蕩中,小級別暫未明確方向,指數面臨方向選擇,需要注意高位股的風險。 深證指數今天縮量收陰線,跌破5日均線,接下來幾天方向的選…

基于dijkstra算法的WSN網絡MAC協議matlab仿真,分析網絡延遲與網絡開銷

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.部分程序 4.算法理論概述 5.完整程序 1.程序功能描述 無線傳感器網絡(WSN, Wireless Sensor Network)是由大量低成本、低功耗的傳感器節點組成,通過無線通信實現數據采集、傳輸與…

ES數據庫啟動時可以設置1G一下內存嗎

可以,但強烈不建議在生產環境中這樣做。ES 7.0 版本確實可以設置小于 1GB 的堆內存,但這會帶來嚴重的性能問題和穩定性風險。 快速回答 # 最小化配置示例 - 僅用于測試或開發環境 export ES_JAVA_OPTS"-Xms512m -Xmx512m" ./bin/elasticsearch…

TI-92 Plus計算器:單位換算功能介紹

1 TI-92 Plus計算器:單位換算功能介紹 TI-92 Plus 內置了全面的單位換算功能,支持長度、質量、時間、溫度、面積、體積、速度等數十種物理量的單位轉換,操作直觀,無需手動輸入換算系數。以下是具體使用方法、示例及功能特點&#…

雪球科技Java開發工程師筆試題

單選 1.下列哪些語句關于內存回收的說明是正確的?( C ) A.內存回收程序允許程序員直接釋放內存 B.程序員必須創建一個線程來釋放內存 C.內存回收程序負責釋放無用內存 D.內存回收程序可以在指定的時間釋放內存對象 2.以下哪項不是Java基礎類型(A) A.String B.int C.b…

NV3041A-01芯片屏幕

1. 核心概覽這是一款集成了電源管理、顯示內存(RAM)、時序控制等多種功能的單片顯示驅動芯片(通常稱為Driver IC)。它采用COG(Chip-On-Glass) 工藝,直接將芯片綁定在玻璃基板上,使得…

aiagent知識點

一、MCP (Model Context Protocol) 1. 核心概念是什么:MCP是一個開放協議,用于在應用(如IDE、Agent) 和工具/數據源(如服務器、數據庫) 之間建立標準化的通信。目標:解決AI工具生態的碎片化問題…

第2節-過濾表中的行-WHERE

摘要:在本教程中,您將學習如何使用 PostgreSQL 的 WHERE 子句來篩選表中的行。 PostgreSQL WHERE 子句 SELECT FROM 語句從表中所有行的一個或多個列中查詢數據。實際上,你經常需要選擇滿足某個條件的行。 要根據條件從表中篩選行&#xf…

IACheck賦能AI環評報告審核,推動環保設備制造行業發展

在“雙碳目標”和綠色制造的背景下,環保設備制造行業正在迎來快速發展。然而,環評報告作為項目合規的“通行證”,卻一直是企業最頭疼的環節之一:編寫復雜、審核周期長、錯誤率高。傳統的審核模式不僅耗時耗力,還容易出…

常見的多態

一、核心概念多態(Polymorphism) 的字面意思是“多種形態”。在Java中,它指的是:同一個行為(方法)具有多個不同表現形式或形態的能力。更具體地說,它允許你:父類的引用指向子類的對象…

20250909_排查10.1.1.190檔案庫房綜合管理系統20250908備份缺失問題+優化scp腳本(把失敗原因記錄進日志)并測試腳本執行情況

目錄 一、現象(圖中現象) 二、可能原因 1、本地源文件沒生成(最可能原因) 2、清理邏輯誤刪 三、時間同步檢查 1、運行命令查看當前時間源:w32tm /query /source 2、修改為內網 NTP 服務器 10.1.10.251: 四、腳本優化 1、scp.bat vs roboscp.bat 對比表 2、robo…