Python應用案例之利用opencv實現圖像匹配
1.創(chuàng)作需求
我們通常需要從一幅圖中找到自己想要的信息,例如從一堆表情中找到,自己需要的表情。
2.創(chuàng)作思路
1.使用模板圖片作為卷積核與原圖進行卷積運算,得出匹配度超過某一閾值的范圍。
2.對該部分進行框選
3.工具
主要使用opencv庫實現,通過
cv2.matchTemplate()函數進行實現。
4.代碼實現
import cv2
import matplotlib.pyplot as plt
# 讀取圖像
# 路徑不可以有漢字
original_image = cv2.imread('picture.png')
# 轉化為灰度圖方便計算
gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)
# 顯示原圖
plt.figure(figsize=(20, 20))
plt.imshow(cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)) # 轉換顏色空間以匹配matplotlib
plt.title('Original Image')
plt.axis('off')
plt.show()
# 顯示灰度圖
plt.figure(figsize=(20, 20))
plt.imshow(gray_image, cmap='gray')
plt.title('Grayscale Image')
plt.axis('off')
plt.show()
# 加載模板
# 想要從原圖中找到的部分
# 這里截取原圖中一個表情
template = gray_image[90:180, 100:180]
# 模板匹配
# 將選取表情與原圖匹配
result = cv2.matchTemplate(gray_image, template, cv2.TM_CCOEFF_NORMED)
# 找到匹配得分最高的區(qū)域
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 繪制矩形框
threshold = 0.9999 # 根據需要調整閾值
if max_val >= threshold:
# 計算矩形框的左上角和右下角坐標
top_left = max_loc
bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0])
# 在原圖上繪制矩形框
cv2.rectangle(original_image, top_left, bottom_right, (0, 0, 255), 2)
# 顯示結果
plt.figure(figsize=(20, 20))
plt.imshow(cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)) # 轉換顏色空間以匹配matplotlib
plt.title('Matched Template')
plt.axis('off')
plt.show()5.補充說明
對于閾值的選擇需要自己進行嘗試,已找到最優(yōu)解。這個代碼只找了一個,伙伴們可以自己實現,找到圖中所有的模板圖
到此這篇關于Python應用案例之利用opencv實現圖像匹配的文章就介紹到這了,更多相關Python opencv圖像匹配內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python中動態(tài)創(chuàng)建類實例的方法
在Java中我們可以通過反射來根據類名創(chuàng)建類實例,那么在Python我們怎么實現類似功能呢?其實在Python有一個builtin函數import,我們可以使用這個函數來在運行時動態(tài)加載一些模塊2017-03-03
解決使用Pandas 讀取超過65536行的Excel文件問題
這篇文章主要介紹了解決使用Pandas 讀取超過65536行的Excel文件問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
使用Python編寫Prometheus監(jiān)控的方法
今天小編就為大家分享一篇關于使用Python編寫Prometheus監(jiān)控的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
Python?Concurrent?Futures解鎖并行化編程的魔法示例
Python的concurrent.futures模塊為并行化編程提供了強大的工具,使得開發(fā)者能夠輕松地利用多核心和異步執(zhí)行的能力,本文將深入探討concurrent.futures的各個方面,從基礎概念到高級用法,為讀者提供全面的了解和實用的示例代碼2023-12-12
python 解決數據庫寫入時float自動變?yōu)檎麛档膯栴}
這篇文章主要介紹了python 解決數據庫寫入時float自動變?yōu)檎麛档膯栴},具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

