本来想写了一大堆今天遇到的需求,想想还是删了,我直接说出本文的功能,读取A列的Excel(全是名字),然后点击名字所对应的图片:
名字所对应的图片
直接看视频,是不是你想要的结果!
我循环了三次,大家看看效果
效果还是非常不错的,和预想的一样,读取到某人的名字,就点击某人所对应的图片!
主要解决思路,以及代码的使用场景
首先这里,如何让将名字与对应图片相点击,我开始是想先用图片识别出整个截屏的文字,然后判断我Excel表里的名字是否在识别出的文字里,如果在,就点击文字在图片所在的位置,就是这一点我不会,果断放弃。
接着我就想,可以将名字与点击的图片相绑定,就是如果是:xxx,就点击某张图片:
优点:可以实现,识别文字,并点击对应图片
缺点:名字很多,图片很多,就需要写好多点击函数(这一点后期应该能解决)
目录结构
image文件夹:用来存放你的图片的小截图!!用来存放你的图片的小截图!!用来存放你的图片的小截图!!
这一点非常重要,这一点非常重要,这一点非常重要,这一点非常重要,这一点非常重要
表格文件夹:存放你的Excel
ck.py:点击模块,会在【主程序.py】里进行导入
奉上代码1:ck.py,之前写过一篇:点我
库 安装 作用 pillow pip install pillow
加载图片 pyscreeze pip install pyscreeze
截屏 pyautogui pip install pyautogui
控制鼠标或键盘 opencv-python pip install opencv-python
识别匹配图片
def xm ( ) :
screenScale= 1
target= cv2. imread( r"./image/xm2.png" , cv2. IMREAD_GRAYSCALE)
screenshot= pyscreeze. screenshot( 'my_screenshot.png' )
temp = cv2. imread( r'my_screenshot.png' , cv2. IMREAD_GRAYSCALE)
theight, twidth = target. shape[ : 2 ]
tempheight, tempwidth = temp. shape[ : 2 ]
scaleTemp= cv2. resize( temp, ( int ( tempwidth / screenScale) , int ( tempheight / screenScale) ) )
stempheight, stempwidth = scaleTemp. shape[ : 2 ]
res = cv2. matchTemplate( scaleTemp, target, cv2. TM_CCOEFF_NORMED)
mn_val, max_val, min_loc, max_loc = cv2. minMaxLoc( res)
if ( max_val>= 0.9 ) :
top_left = max_loc
bottom_right = ( top_left[ 0 ] + twidth, top_left[ 1 ] + theight)
tagHalfW= int ( twidth/ 2 )
tagHalfH= int ( theight/ 2 )
tagCenterX= top_left[ 0 ] + tagHalfW
tagCenterY= top_left[ 1 ] + tagHalfH
time. sleep( 0.23 )
pyautogui. click( tagCenterX, tagCenterY, button= 'left' )
time. sleep( 0.1 )
else :
print ( "没找到" )
def xh ( ) :
略
只是改个图片名字
def kk ( ) :
略
只是改个图片名字
奉上代码2:完整版
import os
import pandas
from ck import *
df = pandas. read_excel( "./表格/" + os. listdir( "./表格/" ) [ 0 ] , dtype= str , keep_default_na= '' )
for k in range ( 3 ) :
for i in df. values. tolist( ) :
print ( i[ 0 ] )
if i[ 0 ] == "小明" :
xm( )
elif i[ 0 ] == "小花" :
xh( )
elif i[ 0 ] == "坤坤" :
kk( )
希望对大家有帮助,如有错误,欢迎指正
致力于办公自动化的小小程序员一枚
希望能得到大家的【一个免费关注】!感谢
此外我还提供了,办公十大技巧:点我查看