Misc changes
authorAlyssa Rosenzweig <bobbybee@users.noreply.github.com>
Mon, 29 Jun 2015 00:11:28 +0000 (20:11 -0400)
committerAlyssa Rosenzweig <bobbybee@users.noreply.github.com>
Mon, 29 Jun 2015 00:11:28 +0000 (20:11 -0400)
bin/README.md [deleted file]
examples/demo.cpp
src/CommodityTracking.cpp
src/CommodityTracking.h

diff --git a/bin/README.md b/bin/README.md
deleted file mode 100644 (file)
index 3b964d2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-_CommodityTracking_ binary output files are in this directory. You can find samples here to play with CommodityTracking or test it out.
index 20c2db8..6295e11 100644 (file)
@@ -13,8 +13,17 @@ int main(int argc, char** argv) {
         vector<Skeleton*> skeletons = tracker.getSkeletons();
 
         // visualize skeletons
-        Mat visualization = tracker.cloneFrame(); 
-        resize(visualization, visualization, Size(0, 0), 2, 2); // scale up :) 
+        
+        // to see the background, uncomment the next 3 lines
+        
+        // Mat visualization = tracker.cloneFrame(); 
+        // resize(visualization, visualization, Size(0, 0), 2, 2); // scale up :) 
+        
+        // and comment the next 2 lines
+         
+        Size size = tracker.webcamDimensions();
+        Mat visualization = Mat::zeros(size.height * 2, size.width * 2, CV_8UC3);
+        
 
         int visWidth = visualization.cols, visHeight = visualization.rows;
 
index f326477..1b2e9fa 100644 (file)
@@ -24,6 +24,10 @@ namespace ct {
         return m_history->getLastFrame().clone();
     }
 
+    Size SkeletonTracker::webcamDimensions() {
+        return m_history->getLastFrame().size();
+    }
+
     void Skeleton::smoothLimb(cv::Point2d* oldLimb, cv::Point2d* newLimb, int thresh) {
         if( (newLimb->x == 0 && oldLimb->x != 0) || (newLimb->y == 0 && oldLimb->y != 0)) {
             newLimb->x = oldLimb->x;
@@ -300,10 +304,10 @@ namespace ct {
     static Point findLimb(std::vector<Point>& haystack, cv::Point center, std::function<double(cv::Point, cv::Point)> scorer ) {
         if(haystack.size() == 0) return Point(0, 0); // equivalent of returning null
         
-        double maxScore = 0; // maintain a running max
+        double maxScore = scorer(center, haystack[0]); // maintain a running max
         int maxScoreIndex = 0; 
         
-        for(int i = 0; i < haystack.size(); ++i) {
+        for(int i = 1; i < haystack.size(); ++i) {
             double score = scorer(center, haystack[i]);
 
             if(score > maxScore) {
@@ -319,15 +323,11 @@ namespace ct {
     // implement some fancy hand chosen equations :)
     
     static double scoreHead(cv::Point center, cv::Point point) {
-        double alpha = 1.5;
-        double beta = 1.2;
-
-        return (alpha * (
-                    (center.y - point.y)
-                ) / center.y)
-              - (beta * (
-                     abs(center.x - point.x)
-                ) / center.x);
+        double alpha = 1;
+
+        if(point.y > center.y) return -10000; // heads are above the waist!
+
+        return 1/((alpha * abs(center.x - point.x)+0.001));
     }
 
     static double scoreLeftHand(cv::Point center, cv::Point point) {
index 505a231..bf38d65 100644 (file)
@@ -287,6 +287,13 @@ namespace ct {
              */
 
             cv::Mat cloneFrame();
+        
+            /**
+             * webcamDimensions returns the dimensions of the webcam to the application,
+             * providing a simple abstraction to the underlying OpenCV calls
+             */
+
+            cv::Size webcamDimensions();
         private:
             std::vector<ct::Skeleton*> m_oldSkeletons;
             
This page took 0.030752 seconds and 4 git commands to generate.