千家信息网

Python怎么使用opencv进行手势识别

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关Python怎么使用opencv进行手势识别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。原理首先先进行手部的检测,找到之后会做Hand
千家信息网最后更新 2026年11月02日Python怎么使用opencv进行手势识别

这篇文章将为大家详细讲解有关Python怎么使用opencv进行手势识别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

原理

首先先进行手部的检测,找到之后会做Hand Landmarks。

将手掌的21个点找到,然后我们就可以通过手掌的21个点的坐标推测出来手势,或者在干什么。

程序部分

第一安装Opencv

pip install opencv-python

第二安装mediapipe

pip install mediapipe

程序

先调用这俩个函数库

import cv2import mediapipe as mp

然后再调用摄像头

cap = cv2.VideoCapture(0)

函数主体部分

while True:    ret, img = cap.read()#读取当前数据    if ret:        cv2.imshow('img',img)#显示当前读取到的画面    if cv2.waitKey(1) == ord('q'):#按q键退出程序        break

全部函数

import cv2import mediapipe as mpimport timecap = cv2.VideoCapture(1)mpHands = mp.solutions.handshands = mpHands.Hands()mpDraw = mp.solutions.drawing_utilshandLmsStyle = mpDraw.DrawingSpec(color=(0, 0, 255), thickness=3)handConStyle = mpDraw.DrawingSpec(color=(0, 255, 0), thickness=5)pTime = 0cTime = 0while True:    ret, img = cap.read()    if ret:        imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)        result = hands.process(imgRGB)        # print(result.multi_hand_landmarks)        imgHeight = img.shape[0]        imgWidth = img.shape[1]        if result.multi_hand_landmarks:            for handLms in result.multi_hand_landmarks:                mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS, handLmsStyle, handConStyle)                for i, lm in enumerate(handLms.landmark):                    xPos = int(lm.x * imgWidth)                    yPos = int(lm.y * imgHeight)                    # cv2.putText(img, str(i), (xPos-25, yPos+5), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 255), 2)                    # if i == 4:                    #     cv2.circle(img, (xPos, yPos), 20, (166, 56, 56), cv2.FILLED)                    # print(i, xPos, yPos)        cTime = time.time()        fps = 1/(cTime-pTime)        pTime = cTime        cv2.putText(img, f"FPS : {int(fps)}", (30, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 3)        cv2.imshow('img', img)    if cv2.waitKey(1) == ord('q'):        break

这样我们就能再电脑上显示我们的手部关键点和坐标了,对于手势识别或者别的操作就可以通过获取到的关键点的坐标进行判断了。

附另一个手势识别实例

'''@Time : 2021/2/6 15:41 @Author : WGS@remarks : '''""" 从视频读取帧保存为图片"""import cv2import numpy as np# cap = cv2.VideoCapture("C:/Users/lenovo/Videos/wgs.mp4") #读取文件cap = cv2.VideoCapture(0)  # 读取摄像头# 皮肤检测def A(img):    YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB)  # 转换至YCrCb空间    (y, cr, cb) = cv2.split(YCrCb)  # 拆分出Y,Cr,Cb值    cr1 = cv2.GaussianBlur(cr, (5, 5), 0)    _, skin = cv2.threshold(cr1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)  # Ostu处理    res = cv2.bitwise_and(img, img, mask=skin)    return resdef B(img):    # binaryimg = cv2.Canny(Laplacian, 50, 200) #二值化,canny检测    h = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  # 寻找轮廓    contour = h[0]    contour = sorted(contour, key=cv2.contourArea, reverse=True)  # 已轮廓区域面积进行排序    # contourmax = contour[0][:, 0, :]#保留区域面积最大的轮廓点坐标    bg = np.ones(dst.shape, np.uint8) * 255  # 创建白色幕布    ret = cv2.drawContours(bg, contour[0], -1, (0, 0, 0), 3)  # 绘制黑色轮廓    return retwhile (True):    ret, frame = cap.read()    # 下面三行可以根据自己的电脑进行调节    src = cv2.resize(frame, (400, 350), interpolation=cv2.INTER_CUBIC)  # 窗口大小    cv2.rectangle(src, (90, 60), (300, 300), (0, 255, 0))  # 框出截取位置    roi = src[60:300, 90:300]  # 获取手势框图    res = A(roi)  # 进行肤色检测    cv2.imshow("0", roi)    gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)    dst = cv2.Laplacian(gray, cv2.CV_16S, ksize=3)    Laplacian = cv2.convertScaleAbs(dst)    contour = B(Laplacian)  # 轮廓处理    cv2.imshow("2", contour)    key = cv2.waitKey(50) & 0xFF    if key == ord('q'):        breakcap.release()cv2.destroyAllWindows()

关于"Python怎么使用opencv进行手势识别"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

手势 轮廓 坐标 检测 函数 程序 篇文章 关键 关键点 区域 可以通过 手掌 手部 摄像头 更多 电脑 部分 面积 处理 摄像 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 湖北九亚互联网络科技有限公司 互联网科技公司起名 嘟嘟瓜互联网科技 奇酷互联网络科技公司 互联网科技公司名称 左右互联网络科技 互联网科技大会案例 互联网科技素材视频竖屏 哈尔滨秒房互联网科技有限公司 蓝色互联网科技 青岛中康互联网医疗科技有限公司 北京华百购互联网科技有限公司 岳阳华臻互联网科技有限公司 青岛科技大学互联网大赛研究生 翼展科技 首家互联网医院 玉溪新华互联网科技好不好 南通创西澳互联网科技有限公司 黑龙江互联网科技公司 互联网科技自媒体灵感 新华互联网科技 智能科技公司是互联网公司吗 麻工互联网科技 互联网科技英文 顺玮阁互联网科技 阿里巴巴算科技企业还是互联网 茂名市互联网科技产业园 唯美互联网科技 广州三三互联网科技有限公司 互联网企业和网络科技有限公司
0