最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何利用opencv實現(xiàn)手勢識別

 更新時間:2022年05月30日 11:13:34   作者:??Python編程學習圈????  
這篇文章主要介紹了Python如何利用opencv實現(xiàn)手勢識別,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙可以參考一下

前言:

網(wǎng)上搜到了一些關于手勢處理的實驗,我在這兒簡單的實現(xiàn)一下,主要運用的知識就是opencv,python基本語法,圖像處理基礎知識。

獲取視頻(攝像頭)

這部分沒啥說的,就是獲取攝像頭。

cap = cv2.VideoCapture("C:/Users/lenovo/Videos/1.mp4")#讀取文件
#cap = cv2.VideoCapture(0)#讀取攝像頭
while(True):
    ret, frame = cap.read()    key = cv2.waitKey(50) & 0xFF
    if key == ord('q'):
      break
cap.release()
cv2.destroyAllWindows()

膚色檢測

這里使用的是橢圓膚色檢測模型

在RGB空間里人臉的膚色受亮度影響相當大,所以膚色點很難從非膚色點中分離出來,也就是說在此空間經過處理后,膚色點是離散的點,中間嵌有很多非膚色,這為膚色區(qū)域標定(人臉標定、眼睛等)帶來了難題。如果把RGB轉為YCrCb空間的話,可以忽略Y(亮度)的影響,因為該空間受亮度影響很小,膚色會產生很好的類聚。這樣就把三維的空間將為二維的CrCb,膚色點會形成一定得形狀,如:人臉的話會看到一個人臉的區(qū)域,手臂的話會看到一條手臂的形態(tài)。

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 res

輪廓處理

輪廓處理的話主要用到兩個函數(shù),cv2.findContours和cv2.drawContours,這兩個函數(shù)的使用使用方法很容易搜到就不說了,這部分主要的問題是提取到的輪廓有很多個,但是我們只需要手的輪廓,所以我們要用sorted函數(shù)找到最大的輪廓。

def 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)#已輪廓區(qū)域面積進行排序
    #contourmax = contour[0][:, 0, :]#保留區(qū)域面積最大的輪廓點坐標
    bg = np.ones(dst.shape, np.uint8) *255#創(chuàng)建白色幕布
    ret = cv2.dra
wContours(bg,contour[0],-1,(0,0,0),3) #繪制黑色輪廓
    return ret

全部代碼:

""" 從視頻讀取幀保存為圖片"""
import cv2
import numpy as np
cap = cv2.VideoCapture("C:/Users/lenovo/Videos/1.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 res
def 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)#已輪廓區(qū)域面積進行排序
    #contourmax = contour[0][:, 0, :]#保留區(qū)域面積最大的輪廓點坐標
    bg = np.ones(dst.shape, np.uint8) *255#創(chuàng)建白色幕布
    ret = cv2.drawContours(bg,contour[0],-1,(0,0,0),3) #繪制黑色輪廓
    return ret
while(True):
    ret, frame = cap.read()
    #下面三行可以根據(jù)自己的電腦進行調節(jié)
    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'):
            break
cap.release()
cv2.destroyAllWindows()

到此這篇關于Python如何利用opencv實現(xiàn)手勢識別的文章就介紹到這了,更多相關 Python手勢識別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何用python 操作zookeeper

    如何用python 操作zookeeper

    這篇文章主要介紹了如何用python 操作zookeeper,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 解決NameError:name'pip'is not defined使用pip時報錯問題

    解決NameError:name'pip'is not defined使用pip

    使用pip時遇到NameError:name ‘pip’ is not defined錯誤通常是由于在Python環(huán)境內直接嘗試運行pip命令導致的,正確的做法是在Python外部的命令行中運行pip命令,這個錯誤提醒我們在使用pip時,應確保在正確的環(huán)境中執(zhí)行相關命令
    2024-10-10
  • Python中的異常類型及處理方式示例詳解

    Python中的異常類型及處理方式示例詳解

    今天我們主要來了解一下 Python 中的異常類型以及它們的處理方式。說到異常處理,我們首先要知道什么是異常。其實,異常就是一類事件,當它們發(fā)生時,會影響到程序的正常執(zhí)行,具體內容跟隨小編一起看看吧
    2021-08-08
  • python實現(xiàn)中文文本分句的例子

    python實現(xiàn)中文文本分句的例子

    今天小編就為大家分享一篇python實現(xiàn)中文文本分句的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python解析JSON數(shù)據(jù)的方法簡單例子

    Python解析JSON數(shù)據(jù)的方法簡單例子

    這篇文章主要給大家介紹了關于Python解析JSON數(shù)據(jù)的方法,解析JSON文件是Python中非常常見的操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • 在主機商的共享服務器上部署Django站點的方法

    在主機商的共享服務器上部署Django站點的方法

    這篇文章主要介紹了在主機商的共享服務器上部署Django站點的方法,Django是最具人氣的Python框架,需要的朋友可以參考下
    2015-07-07
  • 如何在keras中添加自己的優(yōu)化器(如adam等)

    如何在keras中添加自己的優(yōu)化器(如adam等)

    這篇文章主要介紹了在keras中實現(xiàn)添加自己的優(yōu)化器(如adam等)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python Gabor濾波器講解

    python Gabor濾波器講解

    這篇文章主要介紹了python Gabor濾波器講解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • python里dict變成list實例方法

    python里dict變成list實例方法

    在本篇內容里小編給大家分析了關于python里dict變成list實例方法的實例內容,對此有需要的朋友們可以參考學習下。
    2019-06-06
  • pandas中的數(shù)據(jù)去重處理的實現(xiàn)方法

    pandas中的數(shù)據(jù)去重處理的實現(xiàn)方法

    這篇文章主要介紹了pandas中的數(shù)據(jù)去重處理的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02

最新評論

宾阳县| 丹江口市| 济源市| 忻城县| 大余县| 临潭县| 布尔津县| 乐山市| 吉水县| 大理市| 冕宁县| 吉林市| 台湾省| 鹤壁市| 酒泉市| 章丘市| 罗定市| 广安市| 桓仁| 栾川县| 南部县| 琼结县| 奈曼旗| 图们市| 凤山县| 南川市| 千阳县| 太仆寺旗| 嵊州市| 永嘉县| 临江市| 含山县| 南丹县| 布拖县| 双江| 杭锦旗| 农安县| 望都县| 印江| 永和县| 临洮县|