資源簡介
Python+CNN+Tensorflow識別手勢,目前做到了0-7的手勢。文件為源代碼和訓練集。主要是調用OpenCV,預處理的主要步驟為:去噪 -> 膚色檢測 -> 二值化 -> 形態學處理 -> 輪廓提取,其中最麻煩的兩項為膚色檢測和輪廓提取。去噪音:使用雙邊濾波器,該濾波器考慮了圖像的空間關系,也考慮圖像的灰度關系。雙邊濾波同時使用了空間高斯權重和灰度相似性高斯權重,確保了邊界不會被模糊掉。然后,膚色檢測和二值化處理采用YCrCb顏色空間的Cr分量+Otsu法閾值分割算法針對YCrCb中Cr分量的處理,對CR通道單獨進行Otsu處理,Otsu方法opencv里用threshold,Otsu算法是對圖像的灰度級進行聚類。
代碼片段和文件信息
import?cv2
import?numpy?as?np
import?os
#?創建目錄結構
if?not?os.path.exists(“data“):
????os.makedirs(“data“)
????os.makedirs(“data/train“)
????os.makedirs(“data/test“)
????os.makedirs(“data/train/0“)
????os.makedirs(“data/train/1“)
????os.makedirs(“data/train/2“)
????os.makedirs(“data/train/3“)
????os.makedirs(“data/train/4“)
????os.makedirs(“data/train/5“)
????os.makedirs(“data/train/6“)
????os.makedirs(“data/train/7“)
????os.makedirs(“data/test/0“)
????os.makedirs(“data/test/1“)
????os.makedirs(“data/test/2“)
????os.makedirs(“data/test/3“)
????os.makedirs(“data/test/4“)
????os.makedirs(“data/test/6“)
????os.makedirs(“data/test/7“)
????
#?訓練或測試
mode?=?‘train‘
directory?=?‘data/‘+mode+‘/‘
cap?=?cv2.VideoCapture(0)
while?True:
????_?frame?=?cap.read()
????#?模擬鏡像
????frame?=?cv2.flip(frame?1)
????
????#?獲取現有圖像的計數
????count?=?{‘zero‘:?len(os.listdir(directory+“/0“))
?????????????‘one‘:?len(os.listdir(directory+“/1“))
?????????????‘two‘:?len(os.listdir(directory+“/2“))
?????????????‘three‘:?len(os.listdir(directory+“/3“))
?????????????‘four‘:?len(os.listdir(directory+“/4“))
?????????????‘five‘:?len(os.listdir(directory+“/5“))
?????????????‘six‘:?len(os.listdir(directory?+?“/6“))?
?????????????‘seven‘:?len(os.listdir(directory?+?“/7“))
?????????????}
????
????#?將每一組的計數打印到屏幕上
????cv2.putText(frame?“MODE?:?“+mode?(10?50)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“IMAGE?COUNT“?(10?100)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“ZERO?:?“+str(count[‘zero‘])?(10?120)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“ONE?:?“+str(count[‘one‘])?(10?140)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“TWO?:?“+str(count[‘two‘])?(10?160)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“THREE?:?“+str(count[‘three‘])?(10?180)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“FOUR?:?“+str(count[‘four‘])?(10?200)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“FIVE?:?“+str(count[‘five‘])?(10?220)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“SIX?:?“+str(count[‘six‘])?(10?240)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????cv2.putText(frame?“SEVEN:?“+str(count[‘seven‘])?(10?260)?cv2.FONT_HERSHEY_PLAIN?1?(0255255)?1)
????
????#?感興趣區域坐標
????x1?=?int(0.5*frame.shape[1])
????y1?=?10
????x2?=?frame.shape[1]-10
????y2?=?int(0.5*frame.shape[1])
????#?畫ROI
????#?遞增/遞減1是對邊界框的補償
????cv2.rectangle(frame?(x1-1?y1-1)?(x2+1?y2+1)?(25500)?1)
????#?提取ROI
????roi?=?frame[y1:y2?x1:x2]
????roi?=?cv2.resize(roi?(64?64))?
?
????cv2.imshow(“frame“?frame)
????
????#_?mask?=?cv2.threshold(mask?200?255?cv2.THRESH_BINARY)
????#kernel?=?np.ones((1?1)?np.uint8)
????#img?=?cv2.dilate(mask?kernel?iterations=1)
????#img?=?cv2.erode(mask?kernel?iterations=1)
????#?拍照后進行處理!
????roi?=?cv2.cvtColor(roi?cv2.COLOR_BGR2GRAY)
????_?roi?=?cv2.threshold(roi?120?255?cv2.THRESH_BINA
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????174??2020-02-28?07:05??手勢識別\.idea\inspectionProfiles\profiles_settings.xm
?????文件????????199??2020-04-11?15:04??手勢識別\.idea\misc.xm
?????文件????????319??2020-02-28?07:05??手勢識別\.idea\modules.xm
?????文件????????415??2020-04-11?15:04??手勢識別\.idea\number-sign-recognition-master.iml
?????文件???????8178??2020-05-11?14:35??手勢識別\.idea\workspace.xm
?????文件?????101140??2020-05-25?16:25??手勢識別\1.jpg
?????文件??????24396??2020-04-11?14:56??手勢識別\venv\Lib\tcl8.6\init.tcl
?????文件????????124??2020-04-11?14:56??手勢識別\venv\pyvenv.cfg
?????文件????????639??2020-04-11?14:56??手勢識別\venv\sc
?????文件???????1455??2020-04-11?14:56??手勢識別\venv\sc
?????文件????????389??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????196760??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????42136??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????57496??2020-04-11?14:56??手勢識別\venv\sc
?????文件????3942552??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????42136??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????26776??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????769688??2020-04-11?14:56??手勢識別\venv\sc
?????文件????1640960??2020-04-11?14:56??手勢識別\venv\sc
?????文件????1955328??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????872600??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????87888??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????26264??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????94360??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????129176??2020-04-11?14:56??手勢識別\venv\sc
?????文件??????31384??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????321688??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????198808??2020-04-11?14:56??手勢識別\venv\sc
?????文件????1450648??2020-04-11?14:56??手勢識別\venv\sc
?????文件?????153240??2020-04-11?14:56??手勢識別\venv\sc
............此處省略2882個文件信息
- 上一篇:Sublime Text238239
- 下一篇:Python3源代碼.rar
評論
共有 條評論