資源簡介
基于Opencv凸包檢測的手勢識別,使用訓練好的XML文件,可以識別0,1,2,3,4,5,6,8等手勢。
代碼片段和文件信息
#include?“math.h“
#include?
#include????
#include??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
#include???
#include???
#include?????????
#include???
//多線程
#include?
using?namespace?cv;
using?namespace?std;
DWORD?WINAPI?myThread(char*?_addr);
float?ComputeAngle(float?float?float?float);
int?fingerSignal[10][2]?=?{?0?};
int?centerToUnity[2]?=?{?0?};
int?fingerNum?=?0;
int?gesture?=?-1;
//獲取手勢信息,在unity的c#腳本中被調用
extern?“C“?_declspec(dllexport)?void?_stdcall?GetGesture(int?_signal[10][2]?int?_centerToUnity[2]?int?&_fingerNum?int?&_gesture)
{
_fingerNum?=?fingerNum;
for?(int?i?=?0;?i?10;?i++)
{
_signal[i][0]?=?0;
_signal[i][1]?=?0;
}
for?(int?i?=?0;?i? {
_signal[i][0]?=?fingerSignal[i][0];
_signal[i][1]?=?fingerSignal[i][1];
}
_centerToUnity[0]?=?centerToUnity[0];
_centerToUnity[1]?=?centerToUnity[1];
_gesture?=?gesture;
}
//開啟一個線程
extern?“C“?_declspec(dllexport)?void?_stdcall?StartDevice(char*?addr)
{
HANDLE?myHandle?=?CreateThread(NULL?0?(LPTHREAD_START_ROUTINE)myThread?addr?0?NULL);//創建線程????
}
//手勢識別主要線程函數
DWORD?WINAPI?myThread(char*?addr)
{
int?delay?=?1;
char?c;
int?frameNum?=?-1; //?frame?counter
VideoCapture?captRefrnc(0);
captRefrnc.set(CV_CAP_PROP_frame_WIDTH?640);
captRefrnc.set(CV_CAP_PROP_frame_HEIGHT?480);
if?(!captRefrnc.isOpened())
{
return?-1;
cout?<“Opening?camera?failed!“;
}
Size?refS?=?Size((int)captRefrnc.get(CV_CAP_PROP_frame_WIDTH)
(int)captRefrnc.get(CV_CAP_PROP_frame_HEIGHT));
bool?bHandFlag?=?false;
const?char*?WIN_SRC?=?“Source“;
const?char*?WIN_RESULT?=?“Result“;
namedWindow(WIN_SRC?CV_WINDOW_AUTOSIZE);
namedWindow(WIN_RESULT?CV_WINDOW_AUTOSIZE);
Mat?frame; //?讀取視頻幀序列
Mat?gray; //灰度圖像
Mat segmented; //二值化閾值分割
Mat?frameHSV; //?hsv空間
Mat?mask(frame.rows?frame.cols?CV_8UC1); //?2值掩膜
Mat?dst(frame); //?輸出圖像
vector?>?contours; //?存儲輪廓信息
vector?>?f
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????35840??2018-01-27?17:35??gestureDistinguish\.vs\gestureDistinguish\v14\.suo
?????文件???????7388??2018-01-22?17:06??gestureDistinguish\gestureDistinguish\gestureDistinguish.vcxproj
?????文件????????945??2018-01-22?17:06??gestureDistinguish\gestureDistinguish\gestureDistinguish.vcxproj.filters
?????文件???????9281??2018-01-27?16:55??gestureDistinguish\gestureDistinguish\main.cpp
?????文件????????764??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\CL.command.1.tlog
?????文件??????51790??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\CL.read.1.tlog
?????文件????????784??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\CL.write.1.tlog
?????文件????????178??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\gestureDistinguish.lastbuildstate
?????文件???????9254??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\gestureDistinguish.write.1u.tlog
?????文件???????1660??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\li
?????文件???????3398??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\li
?????文件????????770??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog\li
?????文件???????3830??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\gestureDistinguish.log
?????文件?????809255??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\main.obj
?????文件????1674240??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\vc140.idb
?????文件????2387968??2018-01-23?21:12??gestureDistinguish\gestureDistinguish\x64\Debug\vc140.pdb
?????文件???49479680??2018-01-27?17:35??gestureDistinguish\gestureDistinguish.sdf
?????文件???????1336??2018-01-23?19:54??gestureDistinguish\gestureDistinguish.sln
?????文件?????184832??2018-01-23?21:12??gestureDistinguish\x64\Debug\gestureDistinguish.exe
?????文件????????853??2018-01-23?20:57??gestureDistinguish\x64\Debug\gestureDistinguish.exp
?????文件????1350236??2018-01-23?21:12??gestureDistinguish\x64\Debug\gestureDistinguish.ilk
?????文件???????2120??2018-01-23?20:57??gestureDistinguish\x64\Debug\gestureDistinguish.lib
?????文件????3772416??2018-01-23?21:12??gestureDistinguish\x64\Debug\gestureDistinguish.pdb
?????目錄??????????0??2018-01-27?19:43??gestureDistinguish\gestureDistinguish\x64\Debug\gestureD.7CD43DD9.tlog
?????目錄??????????0??2018-01-27?19:43??gestureDistinguish\.vs\gestureDistinguish\v14
?????目錄??????????0??2018-01-27?19:43??gestureDistinguish\gestureDistinguish\x64\Debug
?????目錄??????????0??2018-01-27?19:43??gestureDistinguish\.vs\gestureDistinguish
?????目錄??????????0??2018-01-27?19:43??gestureDistinguish\gestureDistinguish\x64
?????目錄??????????0??2018-01-27?19:43??gestureDistinguish\x64\Debug
????...D.H.?????????0??2018-01-27?19:43??gestureDistinguish\.vs
............此處省略6個文件信息
評論
共有 條評論