OpenCV和selenum实现点击操作
import cv2 as cv import numpy as np from PIL import Image, ImageDraw, ImageFont import os from selenium.webdriver.common.action_chains import ActionChains from selenium import webdriver as driver1 resultlist = [] device = 'PC' path = os.path.abspath('..') imglist = [] show =1 url="http://www.bjjs.gov.cn/bjjs/index/index.shtml" driver = driver1.Chrome(executable_path=path+"/Program/chromedriver") """ 首先:加载原始图像和要搜索的图像模板 其次:OpenCV对原始图像进行处理,创建一个灰度版本 再次:在灰度图像里进行处理和查找匹配 最后:使用相同的坐标在原始图像中进行还原并输出 """ def opencv_elementActive(value=0.8, type='OK', msg='流程', title='测试_冀', desc='北京建房委员会', devices='PC'): try: target = path+r"\Run\Demo2\pic\PC\BJ_GOV\background\img.png" temp = r"C:\Users\lenovo\Desktop\newI\UI\temp.png" # 加载原始的RGB图像 img_rgb = cv.imread(target) # 色彩空间转换(因为在opencv中默认的颜色空间是BGR) # 创建一个原始图像的灰度版本,所有操作在灰度版本中处理 img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY) # 加载将要搜索的图像模板 template = cv.imread(temp, 0) # 高斯函数对图形进行高斯滤波 merged = cv.GaussianBlur(np.uint8(np.clip((1.0 * img_rgb - 60), 0, 200)), (0, 0), 3) # shape 图片的尺寸 w, h = template.shape[::-1] # 使用matchTemple对原始灰度图像和图像模板进行匹配(在原始图像中查找并匹配图像模板中的内容,并设置阈值) res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED) threshold = value pt = [] except Exception as e: print(" Error:",e) try: loc = np.where(res >= threshold) # 使用灰度图像中的坐标对原始RGB图像进行标记 for pt in zip(*loc[::-1]): cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 30, 255), 10) cropImg=img_rgb[pt[1]:pt[1] + h,pt[0]:pt[0] + w] merged[pt[1]:pt[1] + h,pt[0]:pt[0] + w] = cropImg creatImgDebug(merged,pt,h) x, y = eval("pt[0]+w/2,pt[1]+h/2") click(x,y) except Exception as e: print("===================================================================================================") def creatImgDebug(img_rgb, pt, h): cv_im = cv.cvtColor(img_rgb, cv.COLOR_BGR2RGB) # arary转换成image pil_im = Image.fromarray(cv_im) # 创建绘制对象 draw = ImageDraw.Draw(pil_im) font = ImageFont.truetype(path + "/Program/FZYTK.TTF", 80, encoding="utf-8") font1 = ImageFont.truetype(path + "/Program/FZYTK.TTF", 40, encoding="utf-8") draw.text((80, 50), "图像识别 {}检测:成功".format("图片识别成功"), (40, 250, 50), font=font) draw.text((pt[0], pt[1] + h + 20), "坐标位:%s,%s" % (pt[0], pt[1]), (250, 40, 1), font=font1) cv_text_im = cv.cvtColor(np.array(pil_im), cv.COLOR_RGB2BGR) cv.namedWindow("Target", 0) cv.resizeWindow("Target", 1600, 900) cv.moveWindow("Target", 10, 50) cv.imshow("Target", cv_text_im) #创建一个窗口显示图片,第一个参数是窗口名字,第二个参数是读入的图片 cv.waitKey(1200) cv.destroyWindow("Target") # 删除建立的全部窗口 def click(x,y): actions = ActionChains(driver) el = driver.find_element_by_xpath('/html/body') actions.move_to_element_with_offset(el, x, y).perform() actions.move_by_offset(0,0).click().perform() driver.implicitly_wait(6) def selenium_start(): driver.get(url) driver.maximize_window() driver.implicitly_wait(4) def screenshot(): driver.save_screenshot(path+r"\Run\Demo2\pic\PC\BJ_GOV\background\img.png") if __name__ == '__main__': """ 第一步:启动浏览器,输入网址 第二步:截取图片,保存到相应路径 第三步:在大图上匹配小的图片 第四步:返回坐标,selenium点击操作 """ selenium_start() screenshot() opencv_elementActive() driver.close()
OpenCV和selenum实现点击操作的更多相关文章
- JS---DOM---点击操作---part1---20个案例
点击操作:------>事件: 就是一件事, 有触发和响应, 事件源 按钮被点击,弹出对话框 按钮---->事件源 点击---->事件名字 被点了--->触发了 弹框了---& ...
- JS---DOM---点击操作---节点的方式---案例
点击操作---节点的方式---案例 案例1:点击按钮,设置p变色---节点的方式做 <!DOCTYPE html> <html lang="en"> < ...
- c#使用UIA进行模拟点击操作
之前,我写过一篇c#使用spy进行模拟操作的文章,有朋友在留言中提到了UIA进行操作,今天也使用UIA重新实现一次对vnc窗体的控制测试. 实现目标 在server框内填入192.168.2.200 ...
- opencv中对图像的像素操作
1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...
- 使用powershell/vbs自动化模拟鼠标点击操作
今天想做windows上的自动化,所以才有了模拟鼠标点击的需求,先考虑用powershell实现: 首先先安装一个名为“WASP”免费可用的Powershell扩展程序,下载地址:http://was ...
- AutoIT: 如何通过坐标相对位置来对无法识别的Menu以及GridView进行定位点击操作
一般情况下,GridView中的数据来自数据库,我们通过Windows Info,是无法获取GridView中的信息的.而软件定制的Menu,很多时候无法通过系统提供的WinMenuSelectIte ...
- Opencv YAML和XML格式文件操作详解
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/47660943 本文参考Opencv 2 ...
- Android 微信UI 、点击操作
上一篇,我们介绍了微信界面的相关知识点.今天我们就来把微信的界面做出来. 首先我们新建一个layout-->LinearLayout-->weixin.xml 我们使用上中下线性布局,采用 ...
- 【Java】在JTable中设置鼠标监听器,点击操作对应数据
最终效果 鼠标点击JTable中任一数据,修改相应的信息. 确定点击的行和列 package com.dao; import java.awt.event.MouseAdapter; import j ...
随机推荐
- ssh登录错误ECDSA host key for ip has changed解决方案
当我们使用ssh root@ip登录Linux服务器时,服务器报错: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WAR ...
- vue学习记录①(vue-cli脚手架构建项目结构)
我们直接从vue的工程化开始入手. 在这里用git命令行搭建项目环境.(当然直接cmd命令行下也是一样的) git下载安装地址:https://www.git-scm.com/download/win ...
- CSS在IE6中常见的兼容性问题
1.在IE6中png24格式的图片不透明 解决办法:写一个条件注释语句,引入一个js插件,然后调用一下js中的方法,把需要处理的元素的类名写在括号中,如下 (插件下载地址:http://www.dil ...
- python turtle 书写新年快乐
文章链接:https://mp.weixin.qq.com/s/xYSKH_KLYfooIoelJH02Cg 农历2018年的最后一篇文章,踏上回家的征途前,推荐一个Python的三方库turtle, ...
- 荣耀5.0以上手机(亲测有效)激活xposed框架的经验
对于喜欢搞机的朋友而言,大多时候会使用到xposed框架及其种类繁多功能强悍的模块,对于5.0以下的系统版本,只要手机能获得Root权限,安装和激活xposed框架是非常简便的,但随着系统版本的不断迭 ...
- git开发常用命令
1.基本命令git branch 查看本地分支git branch -r 查看远程分支git checkout xxx 切换分支git pull origin master //从远程同步到本地,ma ...
- ASP.NET Zero--单元测试
单元测试 ASP.NET Zero启动项目包含单元和集成测试.使用以下工具开发测试: xUnit作为测试框架. Shouldly 作为断言库. Microsoft.EntityFrameworkCor ...
- sqlserver数据库NULL类型注意事项
1,变量NULL类型赋值需要初始化 2,判断条件
- c/c++ 模板 类型推断
模板类型的推断 下面的函数f是个模板函数,typename T.下表是,根据调用测的实参,推断出来的T的类型. 请注意下表的红字部分, f(T&& t)看起来是右值引用,但其实它会根据 ...
- DES加密算法应用:分组加密模式
通常,大多数的分组加密算法都是把数据按照64位分组的方式进行加密和解密.但是几乎所有的加密工作所涉及的数据量都远远大于64位,因此就需要不断地重复加密过程,直到处理完所有的分组.这种分组加密中所涉及的 ...