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

OpenCV+Python3.5 簡易手勢識別的實(shí)現(xiàn)

 更新時(shí)間:2020年12月21日 14:34:28   作者:*_Sasuke?  
這篇文章主要介紹了OpenCV+Python3.5 簡易手勢識別的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

檢測剪刀石頭布三種手勢,通過攝像頭輸入,方法如下:

  • 選用合適顏色空間及閾值提取皮膚部分
  • 使用濾波腐蝕膨脹等方法去噪
  • 邊緣檢測
  • 尋用合適方法分類

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()

效果如下

在這里插入圖片描述

膚色識別——橢圓膚色檢測模型

參考下述博文

http://www.fzitv.net/article/202594.htm

代碼如下

def ellipse_detect(img):
 # 橢圓膚色檢測模型
 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

效果如下,可見與膚色相近的物體全被提取出來,包括桌子。。。
識別時(shí)需尋找一無干擾環(huán)境

在這里插入圖片描述

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

參考下述博文

http://www.fzitv.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邊緣檢測

參考OpenCV中文教程

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

代碼如下

# Canny邊緣檢測v
def canny_detect(image):
 edges = cv2.Canny(image, 50, 200)
 return edges

識別——輪廓匹配

Tensorflow框架實(shí)在太難搭,搭了半天沒搭出來,還一堆錯(cuò)誤。。。所以采用輪廓匹配 cv2.matchShapes() ,方案如下:

  • 劃分出了一個(gè)手勢識別區(qū)域,可避免周圍環(huán)境的干擾,也可簡化圖像處理過程
  • 尋找輪廓時(shí)采用尋找矩形框架 cv2.boundingRect()的方法找到最大輪廓,即手勢的輪廓
  • 將找到的輪廓直接與標(biāo)準(zhǔn)圖片進(jìn)行匹配,簡化識別過程

但在匹配時(shí)發(fā)現(xiàn)“剪刀”的手勢常與“石頭”、“布”的手勢匹配到一起。。。所以另辟蹊徑,在匹配時(shí)加上了對于矩形框架面積的判斷,一般來說有如下規(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 < 25000: # 石頭
  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)

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

石頭 [1.179515828609219, 0.9604643714904955, 0.9896353720020925]

程序效果如下,黃色矩形框?yàn)樽R別區(qū)域,gesture窗口為用于輪廓匹配的手勢圖

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于OpenCV+Python3.5 簡易手勢識別的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)OpenCV 手勢識別 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 5款Python程序員高頻使用開發(fā)工具推薦

    5款Python程序員高頻使用開發(fā)工具推薦

    這篇文章主要介紹了5款Python程序員高頻使用開發(fā)工具,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python使用win32com.client的方法示例

    Python使用win32com.client的方法示例

    本文主要介紹了Python使用win32com.client的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 淺析pytorch中對nn.BatchNorm2d()函數(shù)的理解

    淺析pytorch中對nn.BatchNorm2d()函數(shù)的理解

    Batch Normalization強(qiáng)行將數(shù)據(jù)拉回到均值為0,方差為1的正太分布上,一方面使得數(shù)據(jù)分布一致,另一方面避免梯度消失,這篇文章主要介紹了pytorch中對nn.BatchNorm2d()函數(shù)的理解,需要的朋友可以參考下
    2023-11-11
  • PyQt5+QtChart實(shí)現(xiàn)柱狀圖的繪制

    PyQt5+QtChart實(shí)現(xiàn)柱狀圖的繪制

    QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)柱狀圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • pygame實(shí)現(xiàn)貪吃蛇游戲(下)

    pygame實(shí)現(xiàn)貪吃蛇游戲(下)

    這篇文章主要為大家介紹了pygame實(shí)現(xiàn)貪吃蛇游戲的下篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 解決pandas使用read_csv()讀取文件遇到的問題

    解決pandas使用read_csv()讀取文件遇到的問題

    今天小編就為大家分享一篇解決pandas使用read_csv()讀取文件遇到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python?shapefile轉(zhuǎn)GeoJson的2種方式實(shí)例

    Python?shapefile轉(zhuǎn)GeoJson的2種方式實(shí)例

    geojson是地圖可視化系統(tǒng)中最常用的地理數(shù)據(jù)格式,幾乎所有主流地圖可視化庫或框架都支持geojson數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Python?shapefile轉(zhuǎn)GeoJson的2種方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容

    Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容

    Python有一個(gè)第三方模塊叫?prettytable,專門用來將數(shù)據(jù)格式輸出。本文將通過示例為大家詳細(xì)講講prettytable的用法,感興趣的可以了解一下
    2022-07-07
  • Python 逐行分割大txt文件的方法

    Python 逐行分割大txt文件的方法

    本文通過代碼給大家介紹了Python 逐行分割大txt文件的方法,在文中給大家提到了Python從txt文件中逐行讀取數(shù)據(jù)的方法,需要的朋友參考下吧
    2017-10-10
  • Python爬蟲之Selenium實(shí)現(xiàn)關(guān)閉瀏覽器

    Python爬蟲之Selenium實(shí)現(xiàn)關(guān)閉瀏覽器

    這篇文章主要介紹了Python爬蟲之Selenium實(shí)現(xiàn)關(guān)閉瀏覽器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

定南县| 阳谷县| 聂拉木县| 江门市| 泗洪县| 西畴县| 平顺县| 民和| 宕昌县| 馆陶县| 芮城县| 宜君县| 潮安县| 巴中市| 巴南区| 合山市| 满洲里市| 襄垣县| 班玛县| 永吉县| 疏勒县| 英山县| 西盟| 乐平市| 五家渠市| 汝州市| 崇明县| 巴林右旗| 太康县| 浑源县| 石屏县| 平江县| 贵溪市| 基隆市| 凤凰县| 明水县| 高雄市| 密云县| 竹溪县| 汶川县| 宜宾县|