5分钟完成手势识别项目!CodeBuddy的Craft模式让传统编程方法沦为古董?

简介: 本文介绍了使用CodeBuddy快速开发手势识别程序的方法。首先安装Python 3.9.13并配置VS Code环境,接着通过pip安装依赖库`mediapipe`和`opencv-python`。利用CodeBuddy的Craft模式,仅需输入自然语言描述即可生成基础代码,经过简单调整后即可运行。代码实现了四种手势识别(OK、竖大拇指、握拳、张开手掌),并通过摄像头实时展示结果。尽管电脑摄像头像素较低,但识别效果良好。本文旨在帮助读者了解CodeBuddy的强大功能,并激发更多创意应用。

引言

这期就用CodeBuddy来完成一个手势识别程序,其实只要一次交互就能完成,他的能力还是蛮强的。之前说他能做到很多功能,所有就来多写几个案例,帮助各位更好的去使用,或者这能给你一些新思路。说到手势识别那其实各位都接触过不少,要么就是游戏当中的手势识别或者就是在学习过程接触过类似的内容,我们就先不多说了,我们看下文。

安装python

这里的python用的是3.9.13版本,根据你的系统来进行安装。

我们下载之后会得到这个文件,我们可以双击打开安装即可,这里就不演示过程了。

安装依赖

这里我们先打开VS Code,这里用这个IDE工具进行演示。

然后这里再打开PowerShell安装一下依赖,命令如下:

pip install mediapipe opencv-python

中国大陆地区可能出现无法下载等情况,自己可以想办法去解决一下。

使用CodeBuddy

我们新建文件夹,然后这个文件夹用VS Code打开即可。

然后看到左侧的CodeBuddy,点击即可。

这里用Craft模式,我们这里就可以输入自然语言了,Vibe Coding能力还是很突出的。

其实只要这一句话,他就能完整的生成出来,后续精调一两次就差不多了。

他会进行思考,思考完毕就能完整的生成出项目了。

生成的代码

这里附上生成精调之后的代码,各位可以直接用python运行。

import cv2
import mediapipe as mp
import numpy as np
from collections import deque
# 初始化MediaPipe Hands
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(
    static_image_mode=False,
    max_num_hands=1,
    min_detection_confidence=0.7,
    min_tracking_confidence=0.5)
mp_drawing = mp.solutions.drawing_utils
# 手势历史记录,用于平滑处理
gesture_history = deque(maxlen=5)
def get_hand_landmarks_array(landmarks):
    """将landmarks转换为numpy数组"""
    return np.array([(lm.x, lm.y, lm.z) for lm in landmarks])
def recognize_gesture(hand_landmarks):
    """平衡版手势识别逻辑"""
    landmarks = hand_landmarks.landmark
    points = get_hand_landmarks_array(landmarks)
    
    # 获取关键点索引
    WRIST = 0
    THUMB_TIP = 4; THUMB_MCP = 2
    INDEX_TIP = 8; INDEX_MCP = 5
    MIDDLE_TIP = 12; MIDDLE_MCP = 9
    RING_TIP = 16; RING_MCP = 13
    PINKY_TIP = 20; PINKY_MCP = 17
    # 计算各手指弯曲程度(指尖到MCP的距离)
    thumb_dist = np.linalg.norm(points[THUMB_TIP] - points[THUMB_MCP])
    index_dist = np.linalg.norm(points[INDEX_TIP] - points[INDEX_MCP])
    middle_dist = np.linalg.norm(points[MIDDLE_TIP] - points[MIDDLE_MCP])
    ring_dist = np.linalg.norm(points[RING_TIP] - points[RING_MCP])
    pinky_dist = np.linalg.norm(points[PINKY_TIP] - points[PINKY_MCP])
    
    # 计算指尖间距离
    thumb_index_dist = np.linalg.norm(points[THUMB_TIP] - points[INDEX_TIP])
    index_middle_dist = np.linalg.norm(points[INDEX_TIP] - points[MIDDLE_TIP])
    
    # 1. OK手势判断(最高优先级)
    ok_gesture = (
        thumb_index_dist < 0.1 and  # 拇指食指接触
        middle_dist > 0.2 and      # 其他手指伸展
        ring_dist > 0.2 and
        pinky_dist > 0.2
    )
    
    # 2. 竖起大拇指判断
    thumbs_up = (
        thumb_dist > 0.25 and     # 拇指伸展
        index_dist < 0.15 and      # 其他手指弯曲
        middle_dist < 0.15 and
        ring_dist < 0.15 and
        pinky_dist < 0.15
    )
    
    # 3. 握拳判断
    fist = (
        thumb_dist < 0.15 and     # 所有手指弯曲
        index_dist < 0.12 and
        middle_dist < 0.12 and
        ring_dist < 0.12 and
        pinky_dist < 0.12 and
        np.linalg.norm(points[INDEX_MCP] - points[PINKY_MCP]) < 0.25  # 手掌收紧
    )
    
    # 4. 张开手掌判断
    open_hand = (
        thumb_dist > 0.2 and      # 所有手指伸展
        index_dist > 0.3 and
        middle_dist > 0.3 and
        ring_dist > 0.3 and
        pinky_dist > 0.3 and
        thumb_index_dist > 0.2     # 手指间有足够间距
    )
    
    # 确定手势(按优先级顺序)
    if ok_gesture:
        return "OK"
    elif thumbs_up:
        return "Thumbs Up"
    elif fist:
        return "Fist"
    elif open_hand:
        return "Open Hand"
    else:
        return "Unknown"
# 主程序(添加调试信息显示)
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        continue
        
    frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    results = hands.process(frame_rgb)
    
    if results.multi_hand_landmarks:
        for hand_landmarks in results.multi_hand_landmarks:
            mp_drawing.draw_landmarks(
                frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
            
            current_gesture = recognize_gesture(hand_landmarks)
            gesture_history.append(current_gesture)
            
            if len(gesture_history) >= 3:
                final_gesture = max(set(gesture_history), key=gesture_history.count)
            else:
                final_gesture = current_gesture
            
            # 显示识别结果和关键距离(调试用)
            debug_text = f"{final_gesture}"
            cv2.putText(frame, debug_text, (10, 50),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
    
    cv2.imshow('Hand Gesture Recognition', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

整体代码其实不多,我们接下来看看实际效果。

效果展示

这里直接给出图片吧,方便展示效果。

这里总共就四种手势识别,效果可以参考图片,均为截屏。电脑自带的摄像头像素不好,可能很糊。

结语

整个过程只用了无轮对话,效果还是非常好的,这里各位应该对CodeBuddy的能力有着更进一步的了解,希望你能对本期的手势识别的内容有着兴趣,也期待你的脑洞大开,那么我们下期见。

目录
相关文章
|
4月前
|
IDE 搜索推荐 程序员
《CodeBuddy:像哆啦A梦一样智能的编程助手》
本文介绍腾讯云代码助手CodeBuddy——智能编程伙伴,宛如哆啦A梦般的存在。它具备智能辅助、个性化学习、多场景适配等优势,支持主流IDE与多种编程语言,保护代码隐私并开源透明。通过上下文理解、实时错误检测等功能提升开发效率;根据编码风格优化建议,构建知识图谱。下载链接提供,安装后即可在IDE中使用,助你成为更高效的开发者。
450 17
《CodeBuddy:像哆啦A梦一样智能的编程助手》
|
4月前
|
安全 前端开发 数据安全/隐私保护
CodeBuddy暴改漏洞实录
本文介绍了使用CodeBuddy修复项目漏洞的过程。通过一个包含注册和登录功能的示例项目,展示了如何发现并修复漏洞,如跨域请求测试中暴露管理员权限、高风险信息泄露(如X-Powered-By: Express)及安全头缺失等问题。借助CodeBuddy分析代码后,快速定位并修复了多个漏洞,最终确保项目安全无误。文章还附有修复前后的目录结构对比图,以及前端界面未受影响的验证。总结部分提到CodeBuddy在提升代码安全性方面的价值,并引发对其更多应用场景的思考。
123 3
|
4月前
|
人工智能 自然语言处理 前端开发
从0到上线,CodeBuddy 如何帮我快速构建旅游 App?
本文详细介绍了AI代码助手CodeBuddy的功能与使用方法,并通过实战演示其在前端开发中的应用。文章首先讲解了CodeBuddy的安装步骤,以VS Code为例,引导用户快速上手。随后,通过构建一个旅游APP页面的实例,展示了CodeBuddy在生成代码、调整样式、修复问题等方面的能力。实战中涉及Craft模式交互、提示词优化、元素布局调整等内容,验证了插件的高效性与灵活性。尽管过程中遇到一些小问题,但整体效果令人满意。最后,文章鼓励开发者进一步探索CodeBuddy的潜力,为开发工作带来更多便利。
386 0
|
4月前
|
人工智能 前端开发 JavaScript
打造一款响应式图片画廊
这段内容介绍了使用 CodeBuddy 辅助开发一个响应式图片画廊页面的过程。项目采用了 CSS Grid 和 Masonry 布局实现不等高图片排列,通过 Lightbox 实现大图预览与键盘切换,并加入了无限滚动加载和分类筛选功能。在开发中,CodeBuddy 提供了从 HTML 结构到交互逻辑的全面支持,帮助解决了布局空白、图片自适应等问题,展现了 AI 助手在前端开发中的高效辅助能力。
113 12
|
4月前
|
数据采集 人工智能 自然语言处理
|
4月前
|
人工智能 监控 JavaScript
MCP实战之Agent自主决策-让 AI玩转贪吃蛇
MCP服务器通过提供资源、工具、提示模板三大能力,推动AI实现多轮交互与实体操作。当前生态包含Manus、OpenManus等项目,阿里等企业积极合作,Cursor等工具已集成MCP市场。本文以贪吃蛇游戏为例,演示MCP Server实现流程:客户端连接服务端获取能力集,AI调用工具(如start_game、get_state)控制游戏,通过多轮交互实现动态操作,展示MCP在本地实践中的核心机制与挑战。
594 39
MCP实战之Agent自主决策-让 AI玩转贪吃蛇
|
4月前
|
人工智能 自然语言处理 JavaScript
用 CodeBuddy 搭建Vue框架 像呼吸一样简单
本文介绍如何借助 CodeBuddy 快速创建 Vue 项目。CodeBuddy 是一款支持自然语言编程的工具,能根据用户需求自动生成代码,降低开发门槛。文章详细说明了通过 CodeBuddy 创建 Vue 项目的步骤,包括解决项目创建失败的问题、自动补全代码功能以及启动开发服务器的方法。无论开发者经验如何,CodeBuddy 都能显著提升效率,让开发更专注创意实现。
|
4月前
|
存储 人工智能 算法
CodeBuddy实现图片压缩工具
使用 CodeBuddy 实现图片压缩工具,对开发者和用户都有着显著的好处。对于开发者来说,借助 CodeBuddy 高效的开发能力,可以在更短时间内完成工具开发,将更多精力投入到功能优化和用户体验提升上。同时,CodeBuddy 的智能辅助功能有助于开发者学习和掌握新的开发技术和算法,提升自身技术水平。
102 7
|
4月前
|
人工智能 前端开发 安全
构建现代交互式平台:CodeBuddy如何简化复杂系统开发
文章探讨了构建交互式平台的复杂架构挑战,涵盖前后端分离的五层架构设计。重点介绍了AI编程助手CodeBuddy在简化开发中的作用,包括智能代码生成、架构优化建议、跨技术栈支持、安全实践集成及文档生成等功能。通过实战案例展示,CodeBuddy显著提升开发效率与代码质量,助力团队应对复杂系统开发挑战,成为开发者不可或缺的工具。下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴。
167 10