python基于图片内容识别的微信自动发送信息(对其中逻辑修改一些可以改为自动化回复)

news2024/11/25 4:44:34

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 = []
    list2 = ['5:', '6:', '7:', '4:']
    for i in ictr:
        for j in list2:
            result = fuzzy_search(j, i)
            if len(result) == 1:  # 找到今天的数据时间
                list1.append(i)
    # print(ictr)
    # print(list1)

第一个逻辑内容来了与之相搭配的还有一段逻辑代码

def fuzzy_search(pattern, text):
    if len(re.findall('昨天', text, re.IGNORECASE)) == 0:
        return re.findall(pattern, text, re.IGNORECASE)  # 在文本中查找匹配模式的所有子串,不区分大小写
    else:
        return []

上面两段代码构成了一整个数据的初步筛查,剔除了日期不对的数据首先进行两次遍历循环查看是否有对应5,6,7,4这几个时间节点的数据,并在判断是提出含有昨天的数据日期(本人做的时候只考虑一天,如果要改的话把判断规则加一个and就行了),然后就把出去今天之内以外的数据都剔除了

    if len(list1) > 0:
        ictr = ictr[ictr.index(list1[0]):]  # 吧筛选后的今天数据顶替掉之前的数据
    print(list1)
    print(ictr)
    list1 = []
    list2 = ['二', '2', '一', '1', '三', '3']

这一部分代码,剔除了当日数据可能为空的情况,并且设立了接下来主要的判断规则。

    for i in ictr:
        for j in list2:
            print(j + "   " + i)
            if j == i[0]:
                result = i
            # result = fuzzy_search(j, i)
            if len(result) != 0:  # 把汉字转换为数字方便处理
                # print(i)
                if i[0] == '二':
                    i = '2' + i[1:]
                if i[0] == '一':
                    i = '1' + i[1:]
                if i[0] == '三':
                    i = '3' + i[1:]
                list1.append(i)
    ictr = list(set(list1))

该部分还是使用遍历来处理上面设定的判断逻辑数据,我按照我的需求需要设定的逻辑数据并不多只有6个稍微遍历,处理一下就行了。

这一部分呢主要还是把对应规则的数据给找出来,只筛选开头第一个字符 if j == i[0]:在筛选完成后把所有筛选过后的数据开头全部改成数字方便判断筛选分类(筛选内容页可以放在这里面我写的时候给他拆开了)。

    # print(ictr)
    # print(" 发的受力钢筋阿斯利康都挂机立卡江苏理工就撒恐龙当家管理卡时间老顾客")
    computer_room = {  # 创建存储对象
        1: [],
        2: [],
        3: []
    }
    # print(ictr)
    for i in ictr:  # 设置优先级 2  3  1
        if i[0] == '1':
            computer_room[1].append(i[1:])
        if i[0] == '2':
            computer_room[2].append(i[1:])
        if i[0] == '3':
            computer_room[3].append(i[1:])

这一段呢主要是把数据的优先级规则设定一下,择优而选没有啥逻辑就是设计了一个对象而已,然后把数据遍历放入我们设定好的数据当中,这一段遍历可以和上面结合一下。

    # print(computer_room)
    weekday = now.weekday()
    days_of_week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    var = days_of_week[weekday]
    var2 = {  # 设置需要的规则数据组 也就是需要定的机房
        "星期一": [
            "4",
        ],
        "星期二": [],
        "星期三": [
            "6"
        ],
        "星期四": [
            "2", "4", "7",
        ],
        "星期五": [
            "2", "4", "7",
        ],
        "星期六": [
            "2", "4",
        ]
    }
    databuc = []
    sums1 = computer_room.get(2)  # 二机房
    sums2 = computer_room.get(3)  # 三机房
    sums3 = computer_room.get(1)  # 一机房
    data1 = '一机房'
    data2 = '二机房'
    data3 = '三机房'
    # print(computer_room)

    setdatas = var2.get(var)  # 找到
    # print(setdatas)
    # print(sums1)

到这一段代码基本上逻辑都结束了上面就是设计了关于每一个星期的锁定规则

    deldata = []
    deldata2 = []
    for j in setdatas:
        if len(fuzzy_search(j, str(sums1))) != 0:
            # print(j + "      s")
            databuc.append(j)
        else:
            data2 += j
    # print(len(databuc))
    # print(databuc)
    for j in databuc:
        # print(j + "    " + str(sums2))
        if len(fuzzy_search(j, str(sums2))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data3 += j
    databuc = deldata2
    deldata2 = []
    for j in databuc:
        if len(fuzzy_search(j, str(sums3))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data1 += j
            # databuc.remove(j)
    # print(data1 + "   " + data2 + "   " + data3)

这一段代码就是找出了所有没有被预定的机房然后生成字符串,这部分有一点点逻辑,其中的机房可能是被预定了的但是,其他机房有可能没有被预定所以我们需要保存一下那些没有预定成功的数据对下一个机房在此进行匹配预定,当前还有一个逻辑缺陷,就是如果全部被预定了呢那这一段代码就会出现问题,但是我实际使用是不太可能出现这个问题所以我并没有优化这个规则问题。

    data = ''
    databuc = deldata2
    deldata2 = []
    if len(data1[3:]) != 0:
        data += data1
    if len(data2[3:]) != 0:
        data += data2
    if len(data3[3:]) != 0:
        data += data3
    print(data)

    pyperclip.copy(data)  # 聊天的内容
    spam = pyperclip.paste()

    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V
    win32api.keybd_event(86, 0,   win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)

最后就是把处理好的字符穿发送就OK了,唯一有点逻辑的地方就是字符串拼接了还没啥难度。

def string_to_time(str_time):
    format_str = "%H:%M"
    time_obj = datetime.strptime(str_time, format_str)
    return time_obj.time()

这个就是代码的时间处理没难度csdn很多。

while True:
    # print(123123)
    now = datetime.now()

    # 提取星期几,0表示周一,6表示周日

    time_now = time.strftime("%H:%M:%S", time.localtime())  # 获取当前时间
    # print(time_now)
    sent_time = '06:30:00'  # 发送时间 数据结构采用时间 **:**:**

    # if sent_time != time_now:  # 当前时间等于发送时间则执行以下程序
    if sent_time <= time_now < '06:30:02':  # 当前时间等于发送时间则执行以下程序
        def open_app(app_dir):
            os.startfile(app_dir)


        # 打开微信
        if __name__ == "__main__":
            app_dir = r'D:\Program Files\Tencent\WeChat\WeChat.exe'  # 此处为微信的绝对路径
            open_app(app_dir)
            time.sleep(1)

            # 进入微信,模拟按键Ctrl+F
        achieve()

        exit()  # 退出程序

这一段是代码的运行主题主要就是定时发送,然后我考虑到使用while 运行起来电脑压力有点大就让他一秒动一次让后把判断的规则增加了几秒让其在一分钟内完成整个处理就OK了

4.完整代码

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

截图主体

"""

实现定时自动发送消息

"""

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


def fuzzy_search(pattern, text):
    if len(re.findall('昨天', text, re.IGNORECASE)) == 0:
        return re.findall(pattern, text, re.IGNORECASE)  # 在文本中查找匹配模式的所有子串,不区分大小写
    else:
        return []


def achieve():
    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)
    time.sleep(2)  # 剔除可以不需要的暂停
    strings = img()

    ictr = ICTR(strings)  # 获取生成图片的名称通过名称找到图片进行处理
    # ictr = ICTR("2024_10_12_22_02_18.jpg")  # 获取生成图片的名称通过名称找到图片进行处理
    print(ictr)
    list1 = []
    list2 = ['5:', '6:', '7:', '4:']
    for i in ictr:
        for j in list2:
            result = fuzzy_search(j, i)
            if len(result) == 1:  # 找到今天的数据时间
                list1.append(i)
    # print(ictr)
    # print(list1)
    if len(list1) > 0:
        ictr = ictr[ictr.index(list1[0]):]  # 吧筛选后的今天数据顶替掉之前的数据
    print(list1)
    print(ictr)
    list1 = []
    list2 = ['二', '2', '一', '1', '三', '3']
    # print(ictr)
    for i in ictr:
        for j in list2:
            print(j + "   " + i)
            if j == i[0]:
                result = i
            # result = fuzzy_search(j, i)
            if len(result) != 0:  # 把汉字转换为数字方便处理
                # print(i)
                if i[0] == '二':
                    i = '2' + i[1:]
                if i[0] == '一':
                    i = '1' + i[1:]
                if i[0] == '三':
                    i = '3' + i[1:]
                list1.append(i)
    ictr = list(set(list1))
    # print(ictr)
    # print(" 发的受力钢筋阿斯利康都挂机立卡江苏理工就撒恐龙当家管理卡时间老顾客")
    computer_room = {  # 创建存储对象
        1: [],
        2: [],
        3: []
    }
    # print(ictr)
    for i in ictr:  # 设置优先级 2  3  1
        if i[0] == '1':
            computer_room[1].append(i[1:])
        if i[0] == '2':
            computer_room[2].append(i[1:])
        if i[0] == '3':
            computer_room[3].append(i[1:])
    # print(computer_room)
    weekday = now.weekday()
    days_of_week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    var = days_of_week[weekday]
    var2 = {  # 设置需要的规则数据组 也就是需要定的机房
        "星期一": [
            "4",
        ],
        "星期二": [],
        "星期三": [
            "6"
        ],
        "星期四": [
            "2", "4", "7",
        ],
        "星期五": [
            "2", "4", "7",
        ],
        "星期六": [
            "2", "4",
        ]
    }
    databuc = []
    sums1 = computer_room.get(2)  # 二机房
    sums2 = computer_room.get(3)  # 三机房
    sums3 = computer_room.get(1)  # 一机房
    data1 = '一机房'
    data2 = '二机房'
    data3 = '三机房'
    # print(computer_room)

    setdatas = var2.get(var)  # 找到
    # print(setdatas)
    # print(sums1)
    deldata = []
    deldata2 = []
    for j in setdatas:
        if len(fuzzy_search(j, str(sums1))) != 0:
            # print(j + "      s")
            databuc.append(j)
        else:
            data2 += j
    # print(len(databuc))
    # print(databuc)
    for j in databuc:
        # print(j + "    " + str(sums2))
        if len(fuzzy_search(j, str(sums2))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data3 += j
    databuc = deldata2
    deldata2 = []
    for j in databuc:
        if len(fuzzy_search(j, str(sums3))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data1 += j
            # databuc.remove(j)
    # print(data1 + "   " + data2 + "   " + data3)
    data = ''
    databuc = deldata2
    deldata2 = []
    if len(data1[3:]) != 0:
        data += data1
    if len(data2[3:]) != 0:
        data += data2
    if len(data3[3:]) != 0:
        data += data3
    print(data)

    pyperclip.copy(data)  # 聊天的内容
    spam = pyperclip.paste()

    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V
    win32api.keybd_event(86, 0,   win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)


# time.sleep(3)  剔除可以不需要的暂停


def string_to_time(str_time):
    format_str = "%H:%M"
    time_obj = datetime.strptime(str_time, format_str)
    return time_obj.time()


while True:
    # print(123123)
    now = datetime.now()

    # 提取星期几,0表示周一,6表示周日

    time_now = time.strftime("%H:%M:%S", time.localtime())  # 获取当前时间
    # print(time_now)
    sent_time = '06:30:00'  # 发送时间 数据结构采用时间 **:**:**

    # if sent_time != time_now:  # 当前时间等于发送时间则执行以下程序
    if sent_time <= time_now < '06:30:02':  # 当前时间等于发送时间则执行以下程序
        def open_app(app_dir):
            os.startfile(app_dir)


        # 打开微信
        if __name__ == "__main__":
            app_dir = r'D:\Program Files\Tencent\WeChat\WeChat.exe'  # 此处为微信的绝对路径
            open_app(app_dir)
            time.sleep(1)

            # 进入微信,模拟按键Ctrl+F
        achieve()

        exit()  # 退出程序

逻辑主体

import datetime
import time
import numpy as np
from PIL import ImageGrab, Image
import cv2

from paddleocr import PaddleOCR

# 实例化OCR模型
ocr = PaddleOCR()

# 识别图片中的文字  内容识别
def ICTR(name):
    result = ocr.ocr('E:\\Python\\pythonProject1\\'+name)
    # print('识别结果:',datetime.datetime.now())
    sstr = "D:\\图片\\文件\\" + time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time())) + ".txt"
    print(sstr)
    strsc = []
    # sums = 0
    with open(sstr, 'w', encoding='utf-8') as file:
        # with open(sstr, 'w', encoding='utf-8') as file:
        for line in result:
            for word in line:
                text_line = word[-1]  # 提取出识别数据中的文字元组
                text = text_line[0]  # 从文字元组中提取文字内容
                # print("text:", text)
                file.write(text + '\n')  # 将文字内容写入文件中
                strsc.append(text)
                # print(text + '\n')
    return strsc

图片内容识别主体

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源免费】基于SpringBoot+Vue.JS在线视频教育平台(JAVA毕业设计)

本文项目编号 T 027 &#xff0c;文末自助获取源码 \color{red}{T027&#xff0c;文末自助获取源码} T027&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

解析 Vue 模板的本质:从语法糖到渲染过程

大家耳熟能详的表述如下&#xff1a;Vue 模板的本质其实是一种 声明式渲染 的形式&#xff0c;它在开发过程中提供了将组件的结构与逻辑分离的便利。 也就是说&#xff0c;模板 template 的存在只是为了让我们以更直观的方式描述界面的结构&#xff0c;然而在运行时&#xff0…

Android Framework AMS(09)service组件分析-3(bindService和unbindService关键流程分析)

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;上上一章节主要解读应用层service组件启动的2种方式startService和bindService&#xff0c;以及从APP层到AMS调用之间的打通。上一章节我们关注了s…

北京大学冯惠:与卓越者同行,方能更快的成长 | OceanBase数据库大赛获奖选手访谈

本文邀请2022 OceanBase 数据库大赛的季军&#xff0c;来自北京大学的冯惠同学&#xff0c;与我们分享如何寻找自己的兴趣&#xff1b;在一番经历后&#xff0c;对于产品与研发的职业方向观察&#xff1b;以及如何在学生时期提升个人专业能力&#xff0c;和参加数据库大赛的个人…

【Python技术】利用akshare定时获取股票实时价,低于5日线钉钉通知报警

今天看了下大盘&#xff0c;临时有个想法&#xff0c;我想知道某个股票回踩5日线的价格&#xff0c;如果实时价格低于5日线通过钉钉报警通知我。 说干就干&#xff0c;临时撸了下简单的代码&#xff0c;仅做演示。 1、计算5日线思路 很多券商软件的MA5价格是近5个交易日收盘…

Java项目-基于springboot框架的医患档案管理系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

Hi3061M——VL53L0X激光测距(IIC)(同样适用于其他MCU)2

目录 前言资源下载移植基本使用IO配置调用测量 总结 前言 昨晚太晚了&#xff0c;草草结束了上一篇&#xff0c;今天更新下半部分。 昨天已经讲了VL53L0X的使用流程&#xff0c;无非就是进行6步的效准初始化&#xff0c;然后配置下模式和时间&#xff0c;开始采样&#xff0c;…

LDAP 部署手册

Centos 1. 安装openldap软件 # 安装openldap yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtoolscp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap…

Leetcode 跳跃游戏 二

核心任务是找出从数组的起点跳到终点所需的最小跳跃次数。 这段代码解决的是“跳跃游戏 II”&#xff08;Leetcode第45题&#xff09;&#xff0c;其核心任务是找出从数组的起点跳到终点所需的最小跳跃次数。 class Solution {public int jump(int[] nums) {//首先处理特殊情…

“智驭医疗·未来已来“:医疗保健知识中台的搭建与应用

前言 随着科技的飞速发展&#xff0c;医疗保健领域正在经历深刻的变革。知识中台作为促进医疗行业应用智能化升级的关键底座&#xff0c;正在逐渐成为提高医疗服务质量和效率的重要工具。本文将探讨医疗保健知识中台的内容构成、应用案例以及更新与维护机制。 一、医疗保健知识…

基于ASP.NET的小型超市商品管理系统

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图 前言 示 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 小型超市商品管理系统是一款针对小型超市日常运营需求设计的软件解决方案。该系统主要内容有商品类别…

【JS】无法阻止屏幕滚动

监听滚轮事件&#xff0c;阻止默认行为&#xff0c;但未生效&#xff0c;且控制台报错。 window.addEventListener(wheel, (e) > {e.preventDefault(); })这是因为现代浏览器使用 Passive 事件监听器&#xff0c;默认启用了 passive 模式以确保性能&#xff0c;不会调用 pr…

【软件安装与配置】Redis for Windows

1. 下载 Redis Redis 官方没有直接支持 Windows 的安装程序&#xff0c;但可以使用第三方的 Windows 版本。推荐使用 Memurai 或从 Microsoft archive 提供的 Redis for Windows 下载。 2. 安装 Redis 下载适合 Windows 的安装包&#xff0c;本文以Microsoft archive安装包为…

Git_IDEA集成Git

Git_IDEA集成Git 配置 Git 忽略文件 创建忽略规则文件 引用忽略配置文件 定位 Git 程序 初始化本地库 添加到暂存区 提交到本地库 切换版本 创建分支 切换分支 合并分支 解决冲突 配置 Git 忽略文件 创建忽略规则文件 引用忽略配置文件 在 .gitconfig 文件中进行&…

[Git]一文速通

概述 Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等, )在软件开发过程中被广泛使用 Git的作用 代码回溯版本切换多人协作远程备份 通过Git 仓库来存储和管理代码 文件&#xff0c;Git 仓库分为两种: 本地仓库: 开…

C++和OpenGL实现3D游戏编程【连载15】——着色器初步

&#x1f525;C和OpenGL实现3D游戏编程【目录】 1、本节实现的内容 上一节我们介绍了通过VBO、VAO和EBO怎样将顶点发送到GPU显存&#xff0c;利用GPU与显存之间的高效处理速度&#xff0c;来提高我们的图形渲染效率。那么在此过程中&#xff0c;我们又可以通过着色器&#xff…

webstorm 编辑器配置及配置迁移

1.下载地址 WebStorm&#xff1a;JetBrains 出品的 JavaScript 和 TypeScript IDE 其他版本下载地址 2.安装 点击下一步安装&#xff0c;可根据需要是否删除已有版本 注意&#xff1a; 完成安装后需要激活 3.设置快捷键 以下为个人常用可跳过或根据需要设置 如&#xff1a…

字幕怎么自动生成?教你5种视频加字幕方法

在这个短视频时代&#xff0c;视频内容已成为传播信息、娱乐大众的重要载体。而字幕作为视频不可或缺的一部分&#xff0c;不仅能够提升观众的观看体验&#xff0c;还能跨越语言障碍&#xff0c;让所有观众都能享受视频的魅力。但怎么给视频加上字幕呢&#xff1f;下面给大家分…

vulnhub靶场之JOY

一.环境搭建 1.靶场描述 Does penetration testing spark joy? If it does, this machine is for you. This machine is full of services, full of fun, but how many ways are there to align the stars? Perhaps, just like the child in all of us, we may find joy in …

Java最全面试题->Java基础面试题->JavaSE面试题->异常面试题

异常 下边是我自己整理的面试题&#xff0c;基本已经很全面了&#xff0c;想要的可以私信我&#xff0c;我会不定期去更新思维导图 哪里不会点哪里 1.说一下Java中的异常体系&#xff1f; 2.Error和Exception的区别 Error&#xff1a;系统错误,编译时出现的错误,Exception&…