日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能

發(fā)布時(shí)間:2023/12/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

怎么在Python3.5 中利用OpenCV實(shí)現(xiàn)一個(gè)手勢(shì)識(shí)別功能

發(fā)布時(shí)間:2020-12-22 11:56:32

來(lái)源:億速云

閱讀:67

作者:Leah

怎么在Python3.5 中利用OpenCV實(shí)現(xiàn)一個(gè)手勢(shì)識(shí)別功能?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

OpenCV用攝像頭捕獲視頻

采用方法:調(diào)用OpenCV——cv2.VideoCapture()def?video_capture():

cap?=?cv2.VideoCapture(0)

while?True:

#?capture?frame-by-frame

ret,?frame?=?cap.read()

#?our?operation?on?the?frame?come?here

#?gray?=?cv2.cvtColor(frame,?cv2.COLOR_BGR2GRAY)?可選擇灰度化

#?display?the?resulting?frame

cv2.imshow('frame',?frame)

if?cv2.waitKey(1)?&?0xFF?==?ord('q'):?#?按q鍵退出

break

#?when?everything?done?,?release?the?capture

cap.release()

cv2.destroyAllWindows()

效果如下

膚色識(shí)別——橢圓膚色檢測(cè)模型

參考下述博文

https://www.jb51.net/article/202594.htm

代碼如下def?ellipse_detect(img):

#?橢圓膚色檢測(cè)模型

skinCrCbHist?=?np.zeros((256,?256),?dtype=np.uint8)

cv2.ellipse(skinCrCbHist,?(113,?155),?(23,?15),?43,?0,?360,?(255,?255,?255),?-1)

YCRCB?=?cv2.cvtColor(img,?cv2.COLOR_BGR2YCR_CB)

(y,?cr,?cb)?=?cv2.split(YCRCB)

skin?=?np.zeros(cr.shape,?dtype=np.uint8)

(x,?y)?=?cr.shape

for?i?in?range(0,?x):

for?j?in?range(0,?y):

CR?=?YCRCB[i,?j,?1]

CB?=?YCRCB[i,?j,?2]

if?skinCrCbHist[CR,?CB]?>?0:

skin[i,?j]?=?255

dst?=?cv2.bitwise_and(img,?img,?mask=skin)

return?dst

效果如下,可見(jiàn)與膚色相近的物體全被提取出來(lái),包括桌子。。。

識(shí)別時(shí)需尋找一無(wú)干擾環(huán)境

去噪——濾波、腐蝕和膨脹

參考下述博文

https://www.jb51.net/article/202599.htm

采用方法:高斯濾波 cv2.GaussianBlur() + 膨脹 cv2.dilate(),代碼如下#?膨脹

def?dilate_demo(image):

#?灰度化

gray?=?cv2.cvtColor(image,?cv2.COLOR_BGR2GRAY)

#?二值化

ret,?binary?=?cv2.threshold(gray,?0,?255,?cv2.THRESH_BINARY?|?cv2.THRESH_OTSU)

#?定義結(jié)構(gòu)元素的形狀和大小

kernel?=?cv2.getStructuringElement(cv2.MORPH_RECT,?(5,?5))

#?膨脹操作

dst?=?cv2.dilate(binary,?kernel)

return?dst

#?腐蝕

def?erode_demo(image):

#?灰度化

gray?=?cv2.cvtColor(image,?cv2.COLOR_BGR2GRAY)

#?二值化

ret,?binary?=?cv2.threshold(gray,?0,?255,?cv2.THRESH_BINARY?|?cv2.THRESH_OTSU)

#?定義結(jié)構(gòu)元素的形狀和大小

kernel?=?cv2.getStructuringElement(cv2.MORPH_RECT,?(15,?15))

#?腐蝕操作

dst?=?cv2.erode(binary,?kernel)

return?dst

#?濾波

def?img_blur(image):

#?腐蝕操作

#?img_erode?=?erode_demo(image)

#?膨脹操作

img_dilate?=?dilate_demo(image)

#?均值濾波

#?blur?=?cv2.blur(image,?(5,?5))

#?高斯濾波

blur?=?cv2.GaussianBlur(img_dilate,?(3,?3),?0)

return?blur

Canny邊緣檢測(cè)

參考OpenCV中文教程

https://www.kancloud.cn/aollo/aolloopencv/271603

代碼如下#?Canny邊緣檢測(cè)v

def?canny_detect(image):

edges?=?cv2.Canny(image,?50,?200)

return?edges

識(shí)別——輪廓匹配

Tensorflow框架實(shí)在太難搭,搭了半天沒(méi)搭出來(lái),還一堆錯(cuò)誤。。。所以采用輪廓匹配 cv2.matchShapes() ,方案如下:劃分出了一個(gè)手勢(shì)識(shí)別區(qū)域,可避免周?chē)h(huán)境的干擾,也可簡(jiǎn)化圖像處理過(guò)程

尋找輪廓時(shí)采用尋找矩形框架 cv2.boundingRect()的方法找到最大輪廓,即手勢(shì)的輪廓

將找到的輪廓直接與標(biāo)準(zhǔn)圖片進(jìn)行匹配,簡(jiǎn)化識(shí)別過(guò)程

但在匹配時(shí)發(fā)現(xiàn)“剪刀”的手勢(shì)常與“石頭”、“布”的手勢(shì)匹配到一起。。。所以另辟蹊徑,在匹配時(shí)加上了對(duì)于矩形框架面積的判斷,一般來(lái)說(shuō)有如下規(guī)律,石頭

value?=?[0,?0,?0]

value[0]?=?cv2.matchShapes(img_contour,?img1,?1,?0.0)

value[1]?=?cv2.matchShapes(img_contour,?img2,?1,?0.0)

value[2]?=?cv2.matchShapes(img_contour,?img3,?1,?0.0)

min_index?=?np.argmin(value)

if?min_index?==?0:?#?剪刀

print(text[int(min_index)],?value)

elif?min_index?==?1?and?w*h?

print(text[int(min_index)],?value)

elif?min_index?==?1?and?w*h?>=?25000:?#?剪刀

print(text[0],?value)

elif?min_index?==?2?and?w?*?h?>?30000:?#?布

print(text[int(min_index)],?value)

elif?min_index?==?2?and?w?*?h?<=?30000:?#?剪刀

print(text[0],?value)

程序會(huì)根據(jù)匹配值和面積大小來(lái)決定識(shí)別結(jié)果,例如,下述結(jié)果,1.179515828609219, 0.9604643714904955, 0.9896353720020925分別對(duì)應(yīng)剪刀、石頭、布的匹配值,越小說(shuō)明越吻合;結(jié)合最終識(shí)別情況來(lái)看,在三種手勢(shì)中,石頭的識(shí)別成功率最高,約98%;布其次,約88%;剪刀最低,約80%,而且結(jié)果易受環(huán)境亮度影響,環(huán)境過(guò)暗或過(guò)亮,有時(shí)候手勢(shì)輪廓都出不來(lái)。。。看來(lái)仍有待改進(jìn),還是得用機(jī)器學(xué)習(xí)的方法石頭 [1.179515828609219, 0.9604643714904955, 0.9896353720020925]

看完上述內(nèi)容,你們掌握怎么在Python3.5 中利用OpenCV實(shí)現(xiàn)一個(gè)手勢(shì)識(shí)別功能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

總結(jié)

以上是生活随笔為你收集整理的python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩高清在线播放 | 亚洲国产精品一区二区尤物区 | 国产成人无码精品久久久性色 | 日韩精品一二三区 | 精品国产精品网麻豆系列 | 日韩3区| 美国少妇在线观看免费 | 国产二页 | 中国女人真人一级毛片 | 日本中文字幕一区二区 | 黄色第一网站 | 蜜桃视频久久 | 永久免费av在线 | 高潮毛片无遮挡免费看 | 四虎精品| 天天干天天日 | 污污免费在线观看 | 欧美成人精品一区二区男人看 | 性欧美日本 | 色大师在线观看 | 日韩激情视频 | 久久久一本| 欧美乱轮视频 | 久久婷婷丁香 | 成人在线观看一区二区三区 | 91成人免费在线 | 亚洲成a人v欧美综合天堂麻豆 | 天天干天天干 | 在线观看免费国产视频 | 91免费网| 99久久久国产精品 | 久久av高潮av无码av喷吹 | 欧美性猛交xx乱大交 | 国产一级久久久久毛片精品 | 亚洲女优视频 | 91在线视频免费播放 | 亚洲精品a区 | 西西人体做爰大胆gogo | 一区二区三区视频在线观看免费 | 无法忍受在线观看 | 少妇无码av无码专区在线观看 | 亚洲精品.www | 日本一区视频在线观看 | 亚洲国产精品电影 | 亚洲精品1区2区 | 麻豆国产一区二区三区 | 69xx欧美| 久久人人添人人爽添人人片 | 国产婷婷在线视频 | 关秀媚三级 | 久久麻豆精品 | 欧美成人免费在线观看视频 | 在线视频日韩 | 国模私拍在线观看 | 国产亚洲欧美视频 | 97超碰免费在线观看 | 色狠狠综合 | 美女国产精品 | 夜夜看 | 成人91免费视频 | 在线黄色网页 | 久操视频在线观看 | 中文字幕二 | 国产精品成人免费 | 日韩精品在线一区二区三区 | 无罩大乳的熟妇正在播放 | 男女无遮挡免费视频 | 欧美日韩中文字幕在线 | 四虎视频国产精品免费入口 | 欧美激情成人在线 | 日韩经典午夜福利发布 | 国产精品国产三级国产aⅴ浪潮 | 日韩视频一区二区三区四区 | 日本后进式猛烈xx00动态图 | 欧美69式性猛交 | 91九色porny视频 | 午夜影院在线观看视频 | 免费成人深夜夜视频 | 国产欧美一区二区三区另类精品 | 欧美精品久久96人妻无码 | 青青草原在线免费 | 激情五月五月婷婷 | 无码精品国产一区二区三区 | 91久久人澡人人添人人爽欧美 | 亚洲在线看片 | 欧美成人国产va精品日本一级 | 国产操 | 永久免费看黄 | 亚洲精品91在线 | 欧美性受xxx黑人xyx性爽 | 国产理论片在线观看 | 五十路息子 | 中文字幕一二三 | 日韩国产在线 | 亚洲综合黄色 | 国产人妻一区二区三区四区五区六 | 国产福利91| 亚州av成人 | 婷婷色在线观看 |