基于opencv的姿態(tài)識(shí)別探索

給一個(gè)覺得比較好的數(shù)據(jù)集(http://www.nada.kth.se/cvap/actions/)

手勢(shì)識(shí)別之手勢(shì)檢測(cè)

代碼參考于(https://github.com/rainyear/lolita/issues/8)

import cv2
import numpy as np

def main():
   cap = cv2.VideoCapture(0)
   while(cap.isOpened()):
       ret, img       = cap.read()

       skinMask = HSVBin(img)
       contours = getContours(skinMask)
       cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
       cv2.imshow('capture', img)
       k = cv2.waitKey(10)
       if k == 27:
           break
def getContours(img):
   kernel = np.ones((5,5),np.uint8)
   closed = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
   closed = cv2.morphologyEx(closed, cv2.MORPH_CLOSE, kernel)
   _,contours, h  = cv2.findContours(closed, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
   validContours = [];
   for cont in contours:
       if cv2.contourArea(cont) > 9000:
           # x,y,w,h = cv2.boundingRect(cont)
           # if h/w > 0.75:
           validContours.append(cv2.convexHull(cont))
           # rect = cv2.minAreaRect(cont)
           # box = cv2.cv.BoxPoints(rect)
           # validContours.append(np.int0(box))
   return validContours
# 皮膚檢測(cè),皮膚顏色在HSV顏色空間下與周圍環(huán)境區(qū)分度更高
# 所以把RGB轉(zhuǎn)換到HSV顏色空間下針對(duì)皮膚顏色進(jìn)行二值化,得到mask
def HSVBin(img):
   hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)

   lower_skin = np.array([100, 50, 0])
   upper_skin = np.array([125, 255, 255])

   mask = cv2.inRange(hsv, lower_skin, upper_skin)
   # res = cv2.bitwise_and(img, img, mask=mask)
   return mask
if __name__ == '__main__':
   main()
  • ctvColor:顏色空間轉(zhuǎn)換

  • inRange: lower..指圖像中低于這個(gè)值,圖像值變?yōu)?,upper:指圖像中高于這個(gè)值庸论,圖像值變?yōu)?,而在之間的值變?yōu)?55

  • bitwise_and是對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行“與”操作,即對(duì)圖像(灰度圖像或彩色圖像均可)每個(gè)像素值進(jìn)行二進(jìn)制“與”操作梅肤,1&1=1,1&0=0邑茄,0&1=0姨蝴,0&0=0
    不太懂?肺缕?

  • 去除一些噪點(diǎn)--腐蝕與膨脹左医,得到更完整的白色(皮膚)色塊授帕,最后找出色塊的輪廓,并通過色塊大小排除一些面積較小的噪點(diǎn)浮梢。

    • 膨脹:dilate跛十,進(jìn)行膨脹操作時(shí),將內(nèi)核 B劃過圖像秕硝,將內(nèi)核B覆蓋區(qū)域的最大像素值提取芥映,并代替錨點(diǎn)位置的像素,這一最大化操作會(huì)導(dǎo)致圖像中的亮區(qū)開始“擴(kuò)展”

    • 腐蝕:erode远豺,將最小像素值提取
      原始圖片里的一個(gè)像素(1或者0)只有在核下的所有像素都是1的時(shí)候才被認(rèn)為是1.否則它就被腐蝕掉了(變成0)

      根據(jù)核的大小來決定在邊界附近的多少像素會(huì)被丟棄掉奈偏,所以前景物體的厚度或大小會(huì)縮小,或者說白色區(qū)域會(huì)減小躯护。這個(gè)在移除小的白色噪點(diǎn)時(shí)很有用惊来。

  • ones(shape[,dtype,order]) 依據(jù)一個(gè)給定的形狀和類型返回一個(gè)新的元素全部為1的數(shù)組。
    • data type :uint8 -->range:0~255棺滞,一張圖片的數(shù)據(jù)類型默認(rèn)為unit8
      kernel = np.ones((5,5), np.uint8)裁蚁,,給一個(gè)5x5的核,
  • 開:腐蝕之后再膨脹的另一個(gè)名字检眯。我們使用函數(shù)cv2.morphologyEx()
    opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
  • 閉:膨脹之后再腐蝕厘擂,在用來關(guān)閉前景對(duì)象里的小洞或小黑點(diǎn)很有用。
    closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
  • 輪廓檢測(cè) cv2.findContours
    接收參數(shù)為二值圖锰瘸,所以可以考慮先轉(zhuǎn)換成灰度刽严,再轉(zhuǎn)成二值,如下:
import cv2  
  
img = cv2.imread('D:\\test\\contour.jpg')  
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  
  
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)  
cv2.drawContours(img,contours,-1,(0,0,255),3)  
  
cv2.imshow("img", img)  

函數(shù)原型:

contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

參數(shù)說明:

  1. mode:輪廓檢索模式避凝。RETR_TREE: 建立一個(gè)等級(jí)樹結(jié)構(gòu)的輪廓
  2. method:輪廓的近似辦法舞萄。cv2.CHAIN_APPROX_SIMP:壓縮水平方向、垂直方向管削、對(duì)角線方向的元素倒脓,只保留該方向的終點(diǎn)坐標(biāo)。例如一個(gè)矩形輪廓只需要 4 個(gè)點(diǎn)來保存輪廓信息
  3. contours-返回的輪廓含思,返回一個(gè)list崎弃,list中每個(gè)元素是圖像中一個(gè)輪廓
    4.hierarchy-每條輪廓對(duì)應(yīng)的屬性
    5.cv2.drawContours()繪制輪廓
cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset ]]]]])
 
  1. coutourIdx:指定繪制哪條輪廓,如果為-1則所有含潘,
    7.(0饲做,0,225)表顏色
  • cv.contourArea-計(jì)算面積
    8.cv2.waitKey()--waitKey()函數(shù)的功能是不斷刷新圖像遏弱,頻率時(shí)間為delay盆均,單位為ms。返回值為當(dāng)前鍵盤按鍵值漱逸。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泪姨,一起剝皮案震驚了整個(gè)濱河市游沿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肮砾,老刑警劉巖诀黍,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異唇敞,居然都是意外死亡蔗草,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門疆柔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咒精,“玉大人,你說我怎么就攤上這事旷档∧P穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵鞋屈,是天一觀的道長(zhǎng)范咨。 經(jīng)常有香客問我,道長(zhǎng)厂庇,這世上最難降的妖魔是什么渠啊? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮权旷,結(jié)果婚禮上替蛉,老公的妹妹穿的比我還像新娘。我一直安慰自己拄氯,他們只是感情好躲查,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著译柏,像睡著了一般镣煮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鄙麦,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天典唇,我揣著相機(jī)與錄音,去河邊找鬼胯府。 笑死介衔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盟劫。 我是一名探鬼主播夜牡,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼与纽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼侣签!你這毒婦竟也來了塘装?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤影所,失蹤者是張志新(化名)和其女友劉穎蹦肴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猴娩,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阴幌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卷中。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矛双。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蟆豫,靈堂內(nèi)的尸體忽然破棺而出议忽,到底是詐尸還是另有隱情,我是刑警寧澤十减,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布栈幸,位于F島的核電站,受9級(jí)特大地震影響帮辟,放射性物質(zhì)發(fā)生泄漏速址。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一由驹、第九天 我趴在偏房一處隱蔽的房頂上張望芍锚。 院中可真熱鬧,春花似錦荔棉、人聲如沸闹炉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渣触。三九已至,卻和暖如春壹若,著一層夾襖步出監(jiān)牢的瞬間嗅钻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工店展, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留养篓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓赂蕴,卻偏偏與公主長(zhǎng)得像柳弄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line)碧注,也就是一...
    悟名先生閱讀 4,149評(píng)論 0 13
  • 圖像和視頻分析 原文:Images and Video Analysis 譯者:飛龍 協(xié)議:CC BY-NC-SA...
    布客飛龍閱讀 14,429評(píng)論 0 94
  • 技術(shù)要點(diǎn)分析:此次項(xiàng)目中主要的技術(shù)劃分為身份證號(hào)碼區(qū)域提取和光學(xué)字符識(shí)別嚣伐。身份證號(hào)碼區(qū)域的提取涉及有:圖像灰度化閥...
    HoFie閱讀 8,977評(píng)論 12 34
  • 我走在夜里轩端,過往與未來?yè)涿娑鴣怼?我和舍友說起高中的同桌兼舍友是個(gè)文藝少女,會(huì)彈吉他和尤克里里逝变。她向往麗江基茵,所以大...
    蘇檠空閱讀 775評(píng)論 3 1
  • 一個(gè)高中遇到小學(xué)同學(xué)的故事 小時(shí)候看過伍美珍的一本書,講的什么忘的差不多了壳影,就記得一堆人名拱层。直接用了。 只愿博君一...
    常言閱讀 501評(píng)論 0 3