手势识别项目源码(vs2015)
需要一款3d摄像头,项目基于qt5,通过深度图追踪人体手势
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-03 15:49 tracker
文件 1546 2018-02-13 23:09 trackerCMakeLists.txt
目录 0 2018-04-03 12:08 trackerData
文件 4270 2018-02-13 23:09 trackerDataCamera.cpp
文件 1591 2018-02-13 23:09 trackerDataCamera.h
文件 950 2018-02-13 23:09 trackerDataDataframe.h
文件 2200 2018-02-13 23:09 trackerDataDataStream.cpp
文件 806 2018-02-13 23:09 trackerDataDataStream.h
文件 1421 2018-02-13 23:09 trackerDataSolutionStream.h
文件 1621 2018-02-13 23:09 trackerDataTextureColor8UC3.h
文件 1890 2018-02-13 23:09 trackerDataTextureDepth16UC1.h
目录 0 2018-04-03 12:08 trackerDataStructure
文件 2071 2018-02-13 23:09 trackerDataStructureCustomJointInfo.h
目录 0 2018-04-03 12:08 trackerDetection
文件 13931 2018-02-13 23:09 trackerDetectionDetectionStream.h
文件 41720 2018-02-13 23:09 trackerDetectionFindFingers.cpp
文件 4322 2018-02-13 23:09 trackerDetectionFindFingers.h
文件 3239 2018-02-13 23:09 trackerDetectionmatlab_helpers.h
文件 18017 2018-02-13 23:09 trackerDetectionQianDetection.cpp
文件 1787 2018-02-13 23:09 trackerDetectionQianDetection.h
文件 2900 2018-02-13 23:09 trackerDetectionTrivialDetector.cpp
文件 740 2018-02-13 23:09 trackerDetectionTrivialDetector.h
目录 0 2018-04-03 12:08 trackerEnergy
文件 12208 2018-02-13 23:09 trackerEnergyCollision.cpp
文件 902 2018-02-13 23:09 trackerEnergyCollision.h
文件 2576 2018-02-13 23:09 trackerEnergyDamping.cpp
文件 748 2018-02-13 23:09 trackerEnergyDamping.h
文件 1643 2018-02-13 23:09 trackerEnergyEnergy.cpp
文件 449 2018-02-13 23:09 trackerEnergyEnergy.h
文件 9111 2018-02-13 23:09 trackerEnergyFingertips.cpp
文件 1808 2018-02-13 23:09 trackerEnergyFingertips.h
............此处省略303个文件信息
// based on http://pastebin.com/EHz2a0YP
#include
#include
#include
#include
#include
#include
#include “Util.h“
using namespace cv;
using namespace std;
//-----------------------------------------------------------------//
cv::Mat image sel src hsv;
Scalar cMin(179255255) cMax(000);
bool selecting = false;
char w1[20] = “Color picker“;
char w2[20] = “Picked color“;
char w3[20] = “Segments“;
//-----------------------------------------------------------------//
void filter()
{
// range based color classification
cv::Mat bw;
cv::inRange(hsv cMin cMax bw);
cv::cvtColor(bw sel CV_GRAY2BGR);
cv::imshow(w2 sel);
// segmentation with opening and contours
cv::RNG rng(12345);
cv::Mat output;
vector > contours;
vector hierarchy;
cv::Mat kernel = getStructuringElement(MORPH_ELLIPSE Size(44));
cv::morphologyEx(bw output MORPH_OPEN kernel);
cv::findContours(output contours hierarchy CV_RETR_LIST CV_CHAIN_APPROX_SIMPLE);
cv::Mat drawing = cv::Mat::zeros(output.size() CV_8UC3);
for(int i = 0; i < contours.size(); ++i)
{
Scalar color = Scalar(rng.uniform(0255) rng.uniform(0255) rng.uniform(0255));
drawContours(drawing contours i color CV_FILLED);
Moments m = moments(contours[i]);
Point2f mp = Point2f(m.m10/m.m00 m.m01/m.m00);
double a = contourArea(contours[i]);
if(a > 2000)
{
Scalar color = Scalar(255255255);
drawContours(drawing contours i color);
line(drawing mp + Point2f(-4-4) mp + Point2f( 4 4) color);
line(drawing mp + Point2f( 4-4) mp + Point2f(-4 4) color);
}
}
imshow(w3 drawing);
}
//-----------------------------------------------------------------//
static void onMouse(int event int x int y int f void *)
{
std::cout << “## UPDATED“ << std::endl;
image = src.clone();
Vec3b pix = hsv.at(yx);
int H = pix.val[0];
int S = pix.val[1];
int V = pix.val[2];
//--
if(event == EVENT_LBUTTONDOWN)
selecting = true;
else if(event == EVENT_LBUTTONUP)
selecting = false;
if(selecting)
{
if(H < cMin[0])
cMin[0] = H;
if(S < cMin[1])
cMin[1] = S;
if(V < cMin[2])
cMin[2] = V;
if(H > cMax[0])
cMax[0] = H;
if(S > cMax[1])
cMax[1] = S;
if(V > cMax[2])
cMax[2] = V;
filter();
}
//--
Scalar bgr = cvc(hsv2rgb(cvc(cv::Scalar(HSV))) true);
rectangle(image Point(35) Point(1315) bgr -1);
stringstream s;
s << “HSV=(“ << H << “ “ << S << “ “ << V << “)“;
putText(image s.str().c_str() Point(1715) FONT_HERSHEY_SIMPLEX .6 Scalar(000) 2);
putText(image s.str().c_str() Point(1715) FONT_HERSHEY_SIMPLEX .6 Scalar(255255255));
//--
bgr = cvc(hsv2rgb(cvc(cMin)) true);
rectangle(image Point(325) Point(1335) bgr -1);
s.str(““);
s.clear();
s << “hsv_min=“ << cMin[0] << “ “ << cMin[1] << “
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-03 15:49 tracker
文件 1546 2018-02-13 23:09 trackerCMakeLists.txt
目录 0 2018-04-03 12:08 trackerData
文件 4270 2018-02-13 23:09 trackerDataCamera.cpp
文件 1591 2018-02-13 23:09 trackerDataCamera.h
文件 950 2018-02-13 23:09 trackerDataDatafr
文件 2200 2018-02-13 23:09 trackerDataDataStream.cpp
文件 806 2018-02-13 23:09 trackerDataDataStream.h
文件 1421 2018-02-13 23:09 trackerDataSolutionStream.h
文件 1621 2018-02-13 23:09 trackerDataTextureColor8UC3.h
文件 1890 2018-02-13 23:09 trackerDataTextureDepth16UC1.h
目录 0 2018-04-03 12:08 trackerDataStructure
文件 2071 2018-02-13 23:09 trackerDataStructureCustomJointInfo.h
目录 0 2018-04-03 12:08 trackerDetection
文件 13931 2018-02-13 23:09 trackerDetectionDetectionStream.h
文件 41720 2018-02-13 23:09 trackerDetectionFindFingers.cpp
文件 4322 2018-02-13 23:09 trackerDetectionFindFingers.h
文件 3239 2018-02-13 23:09 trackerDetectionmatlab_helpers.h
文件 18017 2018-02-13 23:09 trackerDetectionQianDetection.cpp
文件 1787 2018-02-13 23:09 trackerDetectionQianDetection.h
文件 2900 2018-02-13 23:09 trackerDetectionTrivialDetector.cpp
文件 740 2018-02-13 23:09 trackerDetectionTrivialDetector.h
目录 0 2018-04-03 12:08 trackerEnergy
文件 12208 2018-02-13 23:09 trackerEnergyCollision.cpp
文件 902 2018-02-13 23:09 trackerEnergyCollision.h
文件 2576 2018-02-13 23:09 trackerEnergyDamping.cpp
文件 748 2018-02-13 23:09 trackerEnergyDamping.h
文件 1643 2018-02-13 23:09 trackerEnergyEnergy.cpp
文件 449 2018-02-13 23:09 trackerEnergyEnergy.h
文件 9111 2018-02-13 23:09 trackerEnergyFingertips.cpp
文件 1808 2018-02-13 23:09 trackerEnergyFingertips.h
............此处省略303个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)