python基于摄像头的手势识别,基于手势识别

  python基于摄像头的手势识别,基于手势识别

  用python实现手势识别(入门)使用open-cv实现简单的手势识别。刚接触python,看过很多有意思的项目,尤其是关于计算机视觉的。在网上找了一些关于手势处理的实验,在这里简单实现一下(PS:和那些大家伙真的差远了,毕竟我是他们的新手)。我用的主要知识是opencv,python基础语法,图像处理基础知识。

  最终结果:

  手势识别python实现手势识别(入门)获取视频(摄像头)肤色检测轮廓处理所有代码获取视频(摄像头)

  这部分没什么好说的,就是拿到相机。

  `

  cap=cv2 . video capture( c:/users/Lenovo/videos/1 . MP4 )# read file # cap=cv2。video capture(0)# read camera while(True):ret,Frame=cap . read()key=cv2 . wait key(50)0x ff if key==ord( q ):break cap . release()cv2 . destructily windows()肤色检测这里使用的是椭圆肤色检测模型。

  在RGB空间中,人脸肤色受亮度影响较大,很难将肤色点与非肤色点分开。也就是说,在这个空间处理后,肤色点是中间嵌入了很多非肤色的离散点,给肤色区域标定(人脸标定、眼睛等)带来了困难。).如果把RGB转换到YCrCb空间,Y(亮度)的影响可以忽略,因为这个空间受亮度影响很小,肤色会产生很好的聚类。这样三维空间会是一个二维的CrCb,肤色点会形成一定的形状,比如在脸的情况下会看到一个脸的区域,在手臂的情况下会看到一个手臂的形状。

  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 _ binarycv 2 . thresh _ Otsu)# ostu处理res=cv2.bitwise_and(img,img,Mask=skin)返回res轮廓处理在处理轮廓时,主要用到两个函数,cv2.findContours和cv2.drawContours这两个函数的用法很容易找到,就不说了。这部分的主要问题是提取的轮廓很多,但是我们只需要手的轮廓,所以要用排序函数来寻找最大的轮廓。

  def B(img): #binaryimg=cv2 .Canny(拉普拉斯算子,50,200) #二值化,精明检测查找轮廓(img,cv2 .RETR _外部,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) #绘制黑色轮廓返回浸水使柔软全部代码 从视频读取帧保存为图片 import cv2 import numpy as npcap=cv2 .视频捕获( C:/Users/Lenovo/Videos/1。MP4 )#读取文件#cap=cv2 .视频捕获(0)#读取摄像头#皮肤检测def A(img):ycr CB=cv2。CVT颜色(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 .OTSU) #Ostu处理res=cv2.bitwise_and(img,img,mask=skin)返回resdef B(img): #binaryimg=cv2 .Canny(拉普拉斯算子,50,200) #二值化,精明检测查找轮廓(img,cv2 .RETR _外部,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) #绘制黑色轮廓retwhile(True): ret,frame=cap.read() #下面三行可以根据自己的电脑进行调节src=cv2.resize(帧,(400,350),插值=cv2 .INTER _立方)#窗口大小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 .拉普拉斯(灰色,cv2 .CV_16S,ksize=3)拉普拉斯=cv2。convertscaleabs(dst)contour=B(拉普拉斯)#轮廓处理cv2.imshow(2 ,contour)key=cv2。wait key(50)0x ff if key==ord( q ):break cap。释放()cv2。destroyallwindows()注意:最后送大家一套2020最新企业皮洪项目实战视频教程,点击此处进来获取跟着练习下,希望大家一起进步哦!

  毕竟刚学不久,做出这个东西自己已经很满足了,当然和那些大佬也是没法比的,没有什么东西是速成的,只能一步一个脚印的走。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • win10有录像功能吗,win10录屏打开摄像头
  • c#虚拟摄像头,C#摄像头
  • c#虚拟摄像头,C#摄像头,C# 利用AForge实现摄像头信息采集
  • ,,JavaScript 如何在浏览器中使用摄像头
  • iPhone12promax摄像头介绍,iPhone14摄像头
  • 双摄像头测距离原理,测距摄像头的测距原理怎么设置,单目摄像头测距原理
  • 雨课堂期末考试有摄像头吗,雨课堂考试怎么开摄像头吗
  • 相机标定外参怎么得出,摄像头内外参标定的参数,相机的内外参数标定
  • 腾讯会议能否看到学生屏幕,腾讯课堂学生开摄像头其他同学能看见吗
  • 笔记本win10怎么打开摄像头拍照,win10摄像头怎么拍照
  • 树莓派控制摄像头拍照,树莓派连接摄像头教程
  • 树莓派摄像头实时监控,树莓派实现目标检测
  • 摄像头移动检测算法软件,摄像头移动检测算法有哪些
  • 笔记本摄像头倒置怎么解决,笔记本摄像头倒着是怎么回事
  • 单目摄像头像测距,双目摄像机测量距离准确吗,双目摄像头测距范围
  • 留言与评论(共有 条评论)
       
    验证码: