1.内容基于python日常生活问题帮助
2.主要框架
import time
from datetime import datetime
import pyperclip
import win32api
import win32con
import os
import re
from Image_Content_Text_Recognition import ICTR
from screenshot import img
上面是逻辑部分主要框架
import time
import numpy as np
from PIL import ImageGrab, Image
import cv2
上面部分是截图部分的框架比较简单
3.开始内容
整个代码的发送逻辑都是用的微信自带的快捷键,使用快捷键配合
win32api进行模拟人为按键来完成查找和发送,整体逻辑较为简单
win32api.keybd_event(17, 0, 0, 0) # Ctrl
win32api.keybd_event(70, 0, 0, 0) # F
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0)
# 复制需要查找的人,按回车,进入聊天输入框
pyperclip.copy('嗨嗨嗨') # 联系人昵称
spam = pyperclip.paste()
win32api.keybd_event(17, 0, 0, 0) # Ctrl
win32api.keybd_event(86, 0, 0, 0) # 86→V;
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
win32api.keybd_event(13, 0, 0, 0) # 13→Enter
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
这一部分就是模拟按键内容
可以看到全都是利用的快捷键
接下来就是最麻烦的部分截图内容了,这一部分没有涉及到逻辑但是要调试画面截图的像素格
import os
import time
import numpy as np
from PIL import ImageGrab, Image
import cv2
if __name__ == '__main__':
img = ImageGrab.grab(bbox=(930, 240, 2000, 1000)) # bbox 定义左、上、右和下像素的4元组 px
print(img.size[1], img.size[0])
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
print(img)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) # 看评论区有C友说颜色相反,于是加了这一条
name = time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time()))+'.jpg'
cv2.imwrite(name, img)
# cv2.imwrite(name, img)
# img = Image.fromarray(img)
# img.save('screenshot1.jpg')
def img():
img = ImageGrab.grab(bbox=(930, 240, 2000, 1000)) # 小屏状态比例 bbox 定义左、上、右和下像素的4元组 px
# img = ImageGrab.grab(bbox=(420, 80, 2600, 1150)) 全屏状态比例 # bbox 定义左、上、右和下像素的4元组 px
print(img.size[1], img.size[0])
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
print(img)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) # 看评论区有C友说颜色相反,于是加了这一条
name = time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time())) + '.jpg'
cv2.imwrite(name, img)
return name
上面就是截图部分整一块的代码这一块除了调试像素格方位以外没有其他操作
完成截图后我改写的方法会返回截图方法内部识别的数据内容
strings = img()
ictr = ICTR(strings) # 获取生成图片的名称通过名称找到图片进行处理
# ictr = ICTR("2024_10_12_22_02_18.jpg") # 获取生成图片的名称通过名称找到图片进行处理
print(ictr)
list1 = []