528|0

20

帖子

8

TA的资源

一粒金砂(中级)

楼主
 

【DigiKey“智造万物,快乐不停”创意大赛】汇总:机器视觉打造全自动老板键智能键盘 [复制链接]

  本帖最后由 eew_dy9f48 于 2024-1-5 08:23 编辑

汇总一下每个步骤的实现帖子:

【DigiKey“智造万物,快乐不停”创意大赛】1,ESP32S2摄像头开发板设计

【DigiKey“智造万物,快乐不停”创意大赛】2,Pi400 HID 键盘功能的实现

【DigiKey“智造万物,快乐不停”创意大赛】3,Pi400 键盘动作的捕捉与独占

DigiKey“智造万物,快乐不停”创意大赛】4,人脸识别在Pi400上的实现。

 

最后我们只需要整合上述功能,就可以实现带有全自动老板键的智能键盘。

完整主程序代码如下:

  • ···
  • import zero_hid
  • import evdev
  • import csv
  • import signal
  • import os
  • import threading
  • if os.geteuid() != 0:
  •     raise ImportError('You must be root to use this library on linux.')
  •    
  • k = zero_hid.Keyboard()
  • # dev = evdev.InputDevice('/dev/input/by-id/usb-_Raspberry_Pi_Internal_Keyboard-event-kbd')
  • dev = evdev.InputDevice('/dev/input/event0')
  • dev.grab() # grab 是为了独占,保证此设备不会被别的进程捕获
  • with open('./codemap.csv', 'r') as file:
  •     reader = csv.reader(file)
  •     codemap = {rows[0]:rows[1] for rows in reader}
  •     del codemap[""]
  • curr_pressed = []
  • def key_input(key):
  •     global curr_pressed
  •     if isinstance(key, evdev.KeyEvent) and key.keystate != 2:
  •         if key.keystate == 1:
  •             curr_pressed.append(key.keycode)
  •         if key.keystate == 0:
  •             curr_pressed.remove(key.keycode)
  •         print("\r" + "CODE: " + key.keycode + " ;STAT: " + str(key.keystate) + " "*40, end="")
  •         keys = [codemap[i] for i in curr_pressed]
  •         k.press(keys, additive=False, hold=True)
  • def handler(signal, frame):
  •     k.release_all()
  •     dev.ungrab()
  •     dev.close()
  •     exit()
  •    
  • signal.signal(signal.SIGTSTP, handler) # Ctrl+Z
  • signal.signal(signal.SIGINT, handler) # Ctrl+C
  • def thread1():
  •     for event in dev.read_loop():
  •         try:
  •             key_input(evdev.categorize(event))
  •         except Exception as error:
  •             print(error)
  • t1 = threading.Thread(target=thread1, daemon=True)
  • t1.start()
  • from ultralytics import YOLO
  • import requests
  • url = "http://192.168.8.171"
  • model = YOLO("yolov8n.pt")
  • requests.get(url+"/control?var=framesize&val=" + str(8))
  • results = model.predict(url+":81/stream", stream=True, show=True, conf = 0.5)
  • delay = 1
  • count = 0
  • mode = 0
  • pre_mode = 0
  • for result in results:
  •     try:
  •         for box in result.boxes:
  •             class_id = result.names[box.cls[0].item()]
  •             cords = box.xyxy[0].tolist()
  •             cords = [round(x) for x in cords]
  •             conf = round(box.conf[0].item(), 2)
  •             print("Object type:", class_id)
  •             print("Coordinates:", cords)
  •             print("Probability:", conf)
  •             print("---")
  •             if class_id == "person":
  •                 mode = 1
  •                 count = 0
  •         if mode != pre_mode:
  •             pre_mode = mode
  •             k.press(["MOD_LEFT_ALT","KEY_TAB"], additive=False, hold=False)
  •             print("triggered!!!")
  •         count += 1
  •         if count > delay:
  •             mode = 0
  •             pre_mode = mode
  •     except Exception as error:
  •         print(error)
  • ···

 

项目源码:https://download.eeworld.com.cn/detail/eew_dy9f48/630641

项目文档: 利用机器视觉打造带有全自动老板键的智能键盘.doc (4.68 MB, 下载次数: 1)
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 3/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表