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類別數據數字化LabelEncoder?VS?OneHotEncoder區(qū)別
這篇文章主要為大家介紹了機器學習:數據預處理之將類別數據數字化的方法LabelEncoder?VS?OneHotEncoder區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09python神經網絡MobileNetV3?large模型的復現詳解
這篇文章主要為大家介紹了python神經網絡MobileNetV3?large模型的復現詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05Python解決IndexError: list index out of&nb
IndexError是一種常見的異常類型,它通常發(fā)生在嘗試訪問列表(list)中不存在的索引時,錯誤信息“IndexError: list index out of range”意味著你試圖訪問的列表索引超出了列表的實際范圍,所以本文給大家介紹了Python成功解決IndexError: list index out of range2024-05-05