zoukankan      html  css  js  c++  java
  • 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是用来确定点击位置和点击事件的。

  • 相关阅读:
    【转】Struts2 和 Spring MVC对比
    【转】JVM介绍
    linux内核阻塞IO
    linux并发concurrency控制
    内核延时
    linux中断编程
    (转)关于java.lang.UnsupportedClassVersionError解决方法总结
    (转) 使用jdk的xjc命令由schema文件生成相应的实体类
    TWS日志查看
    (转)IBM MQ 创建以及常见问题集锦
  • 原文地址:https://www.cnblogs.com/restart-zjc/p/11050042.html
Copyright © 2011-2022 走看看