Python+opencv圖像識別


圖像識別

最近工作遇到了一個需要識別安全鍵盤並點擊的需求,做自動化嘛,由於安全鍵盤的鍵位固定但是鍵值隨機,所以常規的方法不能正確獲取觸發點擊,so,上網查了一下基本思路都是用機器識別。

  1. 加載opencv-python
    pip install opencv-python
    View Code

     會自動加載opencv-python,numpy和cv2

  2. 當文件中導入cv2,直接上代碼:
        def get_keynumber_location(self):
            '''
            獲取字母對應位置
            :return:返回template在image中的的bound參數
            '''
            keynum = pic_path + "\keynum.png"                     #鍵盤圖片
            image = cv2.imread(keynum)
            key = cur_path + "\keyboard\%s.png" % 1              #數字鍵圖片
            template = cv2.imread(key)
            h,w = template.shape[:2]                                #字母圖片尺寸
            result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)       #圖片對比
            min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)              #對比結果最大值最小值以及位置
            br = (max_loc[0] + w,max_loc[1] + h)
    # cv2.rectangle(image,max_loc,br,[0,255,0],2)
    # cv2.imshow("pipei",image)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows()
            return max_loc, br
    
        def click_position(self):
            '''
            確定點擊位置
            :param password: 口令密碼
            :return:返回點擊位置position
            '''
            a,b = self.get_keynumber_location()  #template在image中的的bound參數
            x = a[0] + b[0]
            y = a[1] + b[1]
            position = (x / 2,y / 2)
            self.driver.tap([position])      # 點擊
            return position

     基本就是用cv2.imread(path)讀取圖片,用cv2.matchTemplate(大圖,小圖,策略)函數進行比較,返回的是一個結果集,用cv2.minMaxLoc(result)函數獲得最小值、最大值和相應位置。注釋部分是驗證識別區域是否正確,click_position是用來確定點擊位置和點擊事件的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM