国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python使用Opencv圖像處理方法完成手勢識別(一)

這篇具有很好參考價值的文章主要介紹了Python使用Opencv圖像處理方法完成手勢識別(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


由于是使用Opencv完成手勢識別,所以首先利用顏色特征是對手的顏色進行提取,獲得HSV的最小值與最大值。

HSV的提取

HSV顏色空間閾值主要是靠Trackbar調(diào)節(jié)閾值和cv2.inRange來生成掩膜來提取。
這是我寫的HSV閾值獲取的代碼:

import cv2
import numpy as np

def MouseBack(value):
    pass

cv2.namedWindow('frams')
cv2.resizeWindow('frams',[400,400])

Video=cv2.VideoCapture(0)

cv2.createTrackbar('minH','frams',0,179,MouseBack)
cv2.createTrackbar('maxH','frams',179,179,MouseBack)
cv2.createTrackbar('minS','frams',0,255,MouseBack)
cv2.createTrackbar('maxS','frams',255,255,MouseBack)
cv2.createTrackbar('minV','frams',0,255,MouseBack)
cv2.createTrackbar('maxV','frams',255,255,MouseBack)

while True:
    res,img=Video.read()
    hsvimg=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    
    minh=cv2.getTrackbarPos('minH','frams')
    maxh=cv2.getTrackbarPos('maxH','frams')    
    mins=cv2.getTrackbarPos('minS','frams')
    maxs=cv2.getTrackbarPos('maxS','frams')
    minv=cv2.getTrackbarPos('minV','frams')
    maxv=cv2.getTrackbarPos('maxV','frams')
    
    lowHSV=np.array((minh,mins,minv),np.uint8)
    highHSV=np.array((maxh,maxs,maxv),np.uint8)
    
    newimg=cv2.inRange(hsvimg,lowHSV,highHSV)
    newimg=cv2.bitwise_and(img,img,mask=newimg)
    
    cv2.imshow('frams',newimg)
    
    if cv2.waitKey(1) == ord('q'):
        print(lowHSV)
        print(highHSV)
        break
        
Video.release()       
cv2.destroyAllWindows()

使用方法:
運行代碼之后,從第一個依次調(diào)節(jié)滑塊,使畫面中只有手顯示出來。然后按Q退出界面打印閾值。
效果如下:
Python使用Opencv圖像處理方法完成手勢識別(一)

特征提取

準(zhǔn)備工作做完,就可以開始進行圖像處理了??梢韵葘螐垐D片進行處理。

  1. 首先是進行高斯濾波去噪
  2. 然后將圖像從BGR轉(zhuǎn)換到HSV
  3. 使用cv2.inRange獲得掩膜
  4. 進行形態(tài)學(xué)操作進一步提取特征
    代碼如下:
#讀取圖片
img=cv2.imread(img_path)
#高斯濾波
Gaussimg=cv2.GaussianBlur(img,[5,5],0)
#HSV轉(zhuǎn)換
hsvimg=cv2.cvtColor(Gaussimg,cv2.COLOR_BGR2HSV)
#獲得HSV掩膜
maskimg=cv2.inRange(hsvimg,lowHSV,highHSV)
#開運算
kernel=np.ones([3,3],dtype=np.uint8)
closeimg=cv2.morphologyEx(maskimg,cv2.MORPH_CLOSE,kernel,iterations=3)
#腐蝕
kernel=np.ones([5,5],dtype=np.uint8)
dilateimg=cv2.morphologyEx(closeimg,cv2.MORPH_DILATE,kernel,iterations=3)

效果如下:
Python使用Opencv圖像處理方法完成手勢識別(一)

輪廓繪制

輪廓繪制首先需要尋找輪廓,然后對輪廓特征,比如面積周長進行進一步過濾,最后對輪廓進行逼近,對輪廓進行逼近有兩種。

  1. 輪廓近似cv2.approxPolyDP
  2. 輪廓凸包cv2.convexHull
#尋找輪廓
contours,num=cv2.findContours(newimg,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
    #獲得輪廓面積
    area=cv2.contourArea(contour)
    #獲得輪廓周長
    lenth=cv2.arcLength(contour,True)
    #閾值判斷
    if area>20000 and lenth>1000:
        epsilon = 0.02*cv2.arcLength(contour,True)
        #輪廓近似
        approx1 = cv2.approxPolyDP(contour,epsilon,True)
        #輪廓凸包
        approx2=cv2.convexHull(contour)
        approx1=approx1.reshape(len(approx1),2)
        approx2 = approx2.reshape(len(approx2), 2)
        approx1=np.array(approx1,dtype=np.int32)
        approx2 = np.array(approx2, dtype=np.int32)
        cv2.polylines(faimg, [approx1], True, [255, 125, 100], 4, 16)
        cv2.polylines(f, [approx2], True, [255, 125, 100], 4, 16)

效果如下:
Python使用Opencv圖像處理方法完成手勢識別(一)

完整代碼

import cv2
import numpy as np

highHSV=np.array([ 15 ,255,255])
lowHSV=np.array([ 0 ,50 ,50])

def img_hand(img):
    # if img.shape[0]>1000 and img.shape[1]>1000:
    #     img=cv2.resize(img,None,fx=0.2,fy=0.2)
    faimg=np.copy(img)
    img=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    cv2.GaussianBlur(img,[5,5],0)
    img=cv2.inRange(img,lowHSV,highHSV)

    kernel=np.ones([3,3],dtype=np.uint8)
    img=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations=1)
    kernel=np.ones([5,5],dtype=np.uint8)
    newimg=cv2.morphologyEx(img,cv2.MORPH_DILATE,kernel,iterations=1)

    contours,num=cv2.findContours(newimg,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    for contour in contours:
        area=cv2.contourArea(contour)
        lenth=cv2.arcLength(contour,True)
        if area>20000 and lenth>1000:
            epsilon = 0.02*cv2.arcLength(contour,True)
            approx = cv2.approxPolyDP(contour,epsilon,True)
            approx=approx.reshape(len(approx),2)
            approx=np.array(approx,dtype=np.int32)
            cv2.polylines(faimg, [approx], True, [255, 125, 100], 4, 16)
    return faimg

video=cv2.VideoCapture(0)
while video.isOpened():
    res,img=video.read()
    if res== True:
        newimg=img_hand(img)
        cv2.imshow('frams',newimg)
    if cv2.waitKey(1)==ord('q'):
        break

cv2.destroyAllWindows()
video.release()

由于不使用機器學(xué)習(xí)方法,缺點就是使用時手往前靠一點,頭往后靠一點,防止臉的膚色與手混淆,下一章講解如何識別不同手勢。
Python使用Opencv圖像處理方法完成手勢識別(二)文章來源地址http://www.zghlxwxcb.cn/news/detail-451735.html

到了這里,關(guān)于Python使用Opencv圖像處理方法完成手勢識別(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python|OpenCV-基本使用和圖像處理(1)

    前言 本文是該專欄的第1篇,后面將持續(xù)分享OpenCV計算機視覺的干貨知識,記得關(guān)注。 OpenCV是基于開源許可的跨平臺計算機 視覺庫 ,起初OpenCV是由Intel公司開發(fā)的,直到后面由非營利組織進行維護。提到OpenCV,就不得不說它提供了大量的圖像和視頻處理函數(shù),使得計算機視覺

    2024年02月12日
    瀏覽(110)
  • 使用Python和OpenCV進行圖像處理和分析

    簡介: 圖像處理和分析是計算機視覺領(lǐng)域的重要組成部分。本文將介紹如何使用Python編程語言和OpenCV庫進行圖像處理和分析。我們將涵蓋圖像讀取、顯示、濾波、邊緣檢測和圖像分割等常見的圖像處理操作,并提供相應(yīng)的代碼示例。 安裝OpenCV: 首先,我們需要安裝OpenCV庫。

    2024年02月12日
    瀏覽(101)
  • Python 使用多種方法對圖像進行銳化處理——圖像處理

    Python 使用多種方法對圖像進行銳化處理——圖像處理

    fun_01() fun_02() fun_03() ? ? ?

    2024年02月13日
    瀏覽(97)
  • Python圖像處理:使用OpenCV對圖像進行HSV和RGB表示法的轉(zhuǎn)換

    Python圖像處理:使用OpenCV對圖像進行HSV和RGB表示法的轉(zhuǎn)換 在圖像處理中,我們經(jīng)常需要使用不同的顏色表示法來處理圖像。在OpenCV中,我們可以使用HSV(色相、飽和度、亮度)表示法來替代標(biāo)準(zhǔn)的RGB(紅、綠、藍(lán))表示法來處理圖像。HSV表示法更為直觀和易于使用,因為它將

    2024年02月06日
    瀏覽(100)
  • OpenCV(圖像處理)-基于Oython-濾波器(低通、高通濾波器的使用方法)

    OpenCV(圖像處理)-基于Oython-濾波器(低通、高通濾波器的使用方法)

    低通濾波 :低通濾波可以去除圖像的噪音或平滑圖像。 高通濾波 :可以幫助查找圖像的邊緣。 噪音 :即對一幅圖像的產(chǎn)生負(fù)面效果,過暗或過亮的部分,一幅圖像中,低于或高于某個像素點的值,都可以認(rèn)為是噪音。 卷積核 :即用來濾波的矩陣,卷積核一般為奇數(shù),如

    2024年02月09日
    瀏覽(21)
  • python opencv+tkinter 使用tkinter實現(xiàn)交互式圖像處理工具

    python opencv+tkinter 使用tkinter實現(xiàn)交互式圖像處理工具

    tkinter 基本控件與使用 我們將學(xué)習(xí)如何使用Tkinter包編寫一些圖形用戶界面程序。Tkinter是Python的一個標(biāo)準(zhǔn)包,因此我們并不需要安裝它。我們將從創(chuàng)建一個窗口開始,然后我們在其之上加入一些小組件,比如按鈕,復(fù)選框等,并使用它們的一些屬性。話不多說,讓我們開始吧

    2024年02月10日
    瀏覽(33)
  • 數(shù)字圖像處理(實踐篇)二十七 Python-OpenCV 滑動條的使用

    數(shù)字圖像處理(實踐篇)二十七 Python-OpenCV 滑動條的使用

    目錄 1 涉及的函數(shù) 2 實踐 1 涉及的函數(shù) ⒈?setWindowProperty()用于設(shè)置GUI應(yīng)用程序的屬性 參數(shù) : ①?

    2024年01月25日
    瀏覽(97)
  • python --opencv圖像處理(圖像腐蝕與圖像膨脹)

    python --opencv圖像處理(圖像腐蝕與圖像膨脹)

    圖像的腐蝕( Erosion )和膨脹( Dilation )是兩種基本的形態(tài)學(xué)運算,主要用來尋找圖像中的極大區(qū)域和極小區(qū)域。 又出來新名詞了:形態(tài)學(xué)。 圖像處理中指的形態(tài)學(xué),往往表示的是數(shù)學(xué)形態(tài)學(xué)。數(shù)學(xué)形態(tài)學(xué)( Mathematical morphology ) 是一門建立在格論和拓?fù)鋵W(xué)基礎(chǔ)之上的圖像

    2024年02月08日
    瀏覽(27)
  • 《數(shù)字圖像處理-OpenCV/Python》連載:形態(tài)學(xué)圖像處理

    《數(shù)字圖像處理-OpenCV/Python》連載:形態(tài)學(xué)圖像處理

    本書京東 優(yōu)惠購書鏈接 https://item.jd.com/14098452.html 本書CSDN 獨家連載專欄 https://blog.csdn.net/youcans/category_12418787.html 形態(tài)學(xué)圖像處理是基于形狀的圖像處理,基本思想是利用各種形狀的結(jié)構(gòu)元進行形態(tài)學(xué)運算,從圖像中提取表達(dá)和描繪區(qū)域形狀的結(jié)構(gòu)信息。形態(tài)學(xué)運算的數(shù)學(xué)原

    2024年02月19日
    瀏覽(113)
  • “Python OpenCV 圖像格式轉(zhuǎn)換:RGB與BGR互轉(zhuǎn)“——使用OpenCV庫進行圖像處理的過程中,經(jīng)常需要進行不同格式之間的轉(zhuǎn)換。其中最為常見的就是R...

    “Python OpenCV 圖像格式轉(zhuǎn)換:RGB與BGR互轉(zhuǎn)”——使用OpenCV庫進行圖像處理的過程中,經(jīng)常需要進行不同格式之間的轉(zhuǎn)換。其中最為常見的就是RGB和BGR格式之間的轉(zhuǎn)換。本文將詳細(xì)介紹如何使用opencv-python庫將圖像從RGB格式轉(zhuǎn)換為BGR格式以及從BGR格式轉(zhuǎn)換為RGB格式。 要實現(xiàn)圖像格

    2024年02月12日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包