最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV 模板匹配

 更新時間:2019年07月10日 10:40:32   作者:法納斯特  
這篇文章主要介紹了OpenCV 模板匹配功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

最近小編實現(xiàn)一個微信小程序「跳一跳」的自動化。

主要涉及到了OpenCV的模板匹配和邊緣檢測技術(shù),以及Android開發(fā)調(diào)試工具ADB。

如果放在一起說,感覺內(nèi)容有些多。

所以,分三期來講,也能多了解一些東西。

首先介紹模板匹配,然后邊緣檢測,最后結(jié)合ADB實現(xiàn)「跳一跳」自動化。

游戲雖然過時了,但是拿來練練手還是不錯的。

編程就該是快樂的,哈哈。

/ 01 / 模板匹配

模板匹配,就是在整個圖像區(qū)域里發(fā)現(xiàn)與給定子圖像相匹配的小塊區(qū)域。

這里需要一個模板圖像(給定的子圖像)和一個待檢測的圖像(原圖像)。

在待檢測圖像上,從左向右,從上向下計算模板圖像與重疊子圖像的匹配度,匹配度越大,兩者相同的可能性越大。

這里主要涉及OpenCV的cv2.matchTemplate()cv2.minMaxLoc()函數(shù)。

第一個函數(shù)作用是在模板和輸入圖像之間尋找匹配,獲得匹配結(jié)果圖像。

第二個函數(shù)的作用則是在給定的矩陣中尋找最大和最小值(包括它們的位置)。

其中模板匹配算法有以下六種。

# 第一類,利用平方差來進行匹配,最好匹配為0.匹配越差,匹配值越大
# 平方差匹配
method=CV_TM_SQDIFF
# 標準平方差匹配
method=CV_TM_SQDIFF_NORMED
# 第二類,采用模板和圖像間的乘法操作,所以較大的數(shù)表示匹配程度較高,0標識最壞的匹配效果
# 相關(guān)匹配
method=CV_TM_CCORR
# 標準相關(guān)匹配
method=CV_TM_CCORR_NORMED
# 第三類,將模版對其均值的相對值與圖像對其均值的相關(guān)值進行匹配,1表示完美匹配,-1表示糟糕的匹配,0表示沒有任何相關(guān)性(隨機序列)
# 相關(guān)系數(shù)匹配
method=CV_TM_CCOEFF
# 標準相關(guān)系數(shù)匹配
method=CV_TM_CCOEFF_NORMED

標準化意味著將數(shù)值統(tǒng)一到0~1。

除了平方差類型的是值越小越好,其他的都是值越大越好。

/ 02 / 圖像檢索

首先來看一下兩張圖像,都為灰度圖。

import cv2
# 讀取待檢測圖像
img = cv2.imread('game.png', 0)
# 讀取模板圖像
temple = cv2.imread('temple.png', 0)
# 顯示灰度處理后的待檢測圖像
cv2.namedWindow('sample', 0)
cv2.resizeWindow('sample', 400, 600)
cv2.imshow('sample', img)
# 顯示灰度處理后的模板圖像
cv2.namedWindow('target', 0)
cv2.resizeWindow('target', 400, 600)
cv2.imshow('target', temple)

輸出結(jié)果如下。

第一張為模板圖像,第二張為待檢測圖像。

下面使用OpenCV的兩個函數(shù),來實現(xiàn)模板匹配。

# 獲取模板圖像的高和寬
th, tw = temple.shape[:2]
print(th, tw)
# 使用標準相關(guān)系數(shù)匹配,1表示完美匹配,-1表示糟糕的匹配,0表示沒有任何相關(guān)性
result = cv2.matchTemplate(img, temple, cv2.TM_CCOEFF_NORMED)
# result為匹配結(jié)果矩陣
# print(result)
# TM_CCOEFF_NORMED方法處理后的結(jié)果圖像
cv2.namedWindow('match_r', 0)
cv2.resizeWindow('match_r', 400, 600)
# 顯示窗口
cv2.imshow('match_r', result)
# 使用函數(shù)minMaxLoc,確定匹配結(jié)果矩陣的最大值和最小值(val),以及它們的位置(loc)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 此處選取最大值的位置,為圖像的左上角
tl = max_loc
# 獲取圖像的右下角
br = (tl[0]+tw, tl[1]+th)
# 繪制矩形框
cv2.rectangle(img, tl, br, (0, 0, 255), 2)
# 設(shè)置顯示窗口
cv2.namedWindow('match', 0)
cv2.resizeWindow('match', 400, 600)
# 顯示窗口
cv2.imshow('match', img)
# 結(jié)束
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出結(jié)果如下。

第一張圖中最白的位置,即代表著最高的匹配。

第二張圖中,矩形框則代表著匹配到的結(jié)果。

通過矩形框的位置參數(shù),結(jié)合模板圖像的大小,便可得到小跳棋中心點位置(底部)。

/ 03 / 總結(jié)

現(xiàn)在既然能檢測到「跳一跳」小跳棋的位置,那么下一步就是方塊的位置啦。

相關(guān)文章

  • 關(guān)于python的mmh3庫安裝以及使用詳解

    關(guān)于python的mmh3庫安裝以及使用詳解

    這篇文章主要介紹了關(guān)于python的mmh3庫安裝以及使用詳解,哈希方法主要有MD、SHA、Murmur、CityHash、MAC等幾種方法,mmh3全程murmurhash3,是一種非加密的哈希算法,常用于hadoop等分布式存儲情境中,需要的朋友可以參考下
    2023-07-07
  • python http接口自動化腳本詳解

    python http接口自動化腳本詳解

    這篇文章主要為大家詳細介紹了python http接口自動化腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 利用Python2下載單張圖片與爬取網(wǎng)頁圖片實例代碼

    利用Python2下載單張圖片與爬取網(wǎng)頁圖片實例代碼

    這篇文章主要給大家介紹了關(guān)于利用Python2下載單張圖片與爬取網(wǎng)頁圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • python如何按順序批量修改文件名

    python如何按順序批量修改文件名

    這篇文章主要介紹了python如何按順序批量修改文件名問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python?keras構(gòu)建和訓練模型簡便性初探

    python?keras構(gòu)建和訓練模型簡便性初探

    這篇文章主要介紹了python?keras構(gòu)建和訓練模型簡便性初探,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-02-02
  • SciPy中兩個模塊:io 和misc的使用

    SciPy中兩個模塊:io 和misc的使用

    這篇文章主要介紹了SciPy中兩個模塊:io 和misc的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python中的編碼知識整理匯總

    python中的編碼知識整理匯總

    這篇文章主要介紹了python中的編碼知識整理匯總的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 強悍的Python讀取大文件的解決方案

    強悍的Python讀取大文件的解決方案

    今天小編就為大家分享一篇關(guān)于強悍的Python讀取大文件的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 18個Python入門經(jīng)典必背的程序分享

    18個Python入門經(jīng)典必背的程序分享

    這篇文章主要為大家介紹了Python入門經(jīng)典必背的18個程序。注意:這是初學者要牢記的 18 個代碼,入門之后就簡單了,快跟隨小編一起來學習一下吧
    2023-02-02
  • Python Web框架Flask下網(wǎng)站開發(fā)入門實例

    Python Web框架Flask下網(wǎng)站開發(fā)入門實例

    這篇文章主要介紹了Python Web框架Flask下網(wǎng)站開發(fā)入門實例,本文實現(xiàn)了一個注冊頁面、登錄頁面和上傳頁面,需要的朋友可以參考下
    2015-02-02

最新評論

毕节市| 塘沽区| 高陵县| 荔波县| 峨边| 武冈市| 富蕴县| 象山县| 海盐县| 敖汉旗| 乌拉特后旗| 翼城县| 宁蒗| 江山市| 乌兰浩特市| 内江市| 什邡市| 中山市| 宿州市| 苏尼特左旗| 台中县| 湘乡市| 谷城县| 玉田县| 六枝特区| 罗田县| 宿迁市| 大厂| 桃江县| 清河县| 沈丘县| 桃园市| 沭阳县| 富顺县| 化隆| 郯城县| 叶城县| 天长市| 托里县| 大洼县| 金门县|