]> git.treefish.org Git - stickletrack.git/blobdiff - masking.cpp
...
[stickletrack.git] / masking.cpp
index d76a8b4d3d62a737e88730b3b8cb1f8146252b2c..b90153e402e55e27fcee228b6cc7d88e2fcff426 100644 (file)
@@ -1,6 +1,8 @@
 #include "masking.h"
 #include "stickletrack.h"
 
+#include <iostream>
+
 static Mat background, foregroundmask, colormask, mScissors, scissorsmask;
 static double Z = 1;
 
@@ -29,29 +31,30 @@ void mouseScissors(int evt, int x, int y, int flags, void* param){
 void masking_init() {
   background = Mat::zeros(Props.height, Props.width, CV_32FC3);
   
-  namedWindow("background", CV_WINDOW_KEEPRATIO);
-  namedWindow("foregroundmask", CV_WINDOW_KEEPRATIO);
-  namedWindow("colormask", CV_WINDOW_KEEPRATIO);
-  namedWindow("scissorsmask", CV_WINDOW_KEEPRATIO);
-
-  createTrackbar("Decay", "background", &Prefs.halfdecay, 100, &trackbarCallbackUpdateNormPrefs, 0);
-  createTrackbar("Threshold", "foregroundmask", &Prefs.forethreshold, 255, &trackbarCallbackUpdateNormPrefs, 0);
-
-  createTrackbar("min H", "colormask", &Prefs.mincolor[0], 255, NULL, 0);
-  createTrackbar("min S", "colormask", &Prefs.mincolor[1], 255, NULL, 0);
-  createTrackbar("min V", "colormask", &Prefs.mincolor[2], 255, NULL, 0);
-  createTrackbar("max H", "colormask", &Prefs.maxcolor[0], 255, NULL, 0);
-  createTrackbar("max S", "colormask", &Prefs.maxcolor[1], 255, NULL, 0);
-  createTrackbar("max V", "colormask", &Prefs.maxcolor[2], 255, NULL, 0);
-
-  cvSetMouseCallback("scissorsmask", mouseScissors, 0);
+  namedWindow("stickletrack_masking_background", CV_WINDOW_KEEPRATIO);
+  namedWindow("stickletrack_masking_backgroundmask", CV_WINDOW_KEEPRATIO);
+  namedWindow("stickletrack_masking_colormask", CV_WINDOW_KEEPRATIO);
+  namedWindow("stickletrack_masking_scissorsmask", CV_WINDOW_KEEPRATIO);
+
+  createTrackbar("Decay", "stickletrack_masking_background", &Prefs.halfdecay, 100, &trackbarCallbackUpdateNormPrefs, 0);
+  createTrackbar("Threshold", "stickletrack_masking_backgroundmask", &Prefs.forethreshold, 255, &trackbarCallbackUpdateNormPrefs, 0);
+
+  createTrackbar("min H", "stickletrack_masking_colormask", &Prefs.mincolor[0], 255, NULL, 0);
+  createTrackbar("min S", "stickletrack_masking_colormask", &Prefs.mincolor[1], 255, NULL, 0);
+  createTrackbar("min V", "stickletrack_masking_colormask", &Prefs.mincolor[2], 255, NULL, 0);
+  createTrackbar("max H", "stickletrack_masking_colormask", &Prefs.maxcolor[0], 255, NULL, 0);
+  createTrackbar("max S", "stickletrack_masking_colormask", &Prefs.maxcolor[1], 255, NULL, 0);
+  createTrackbar("max V", "stickletrack_masking_colormask", &Prefs.maxcolor[2], 255, NULL, 0);
+
+  cvSetMouseCallback("stickletrack_masking_scissorsmask", mouseScissors, 0);
 }
 
 void computeBackground (const Mat& origframe, Mat& background, double& Z, const double& decayfac) {
   background = ( exp(-decayfac) * background * Z + origframe ) / ( exp(-decayfac) * Z + 1 );
   Z = exp(-decayfac) * Z + 1;
 
-  imshow("background", background/255.0);
+  if ( ! isWindowClosed("stickletrack_masking_background") )
+    imshow("stickletrack_masking_background", background/255.0);
 }
 
 void computeForegroundMask (const Mat& origframe, const Mat& background, Mat& foregroundMask) {
@@ -60,7 +63,8 @@ void computeForegroundMask (const Mat& origframe, const Mat& background, Mat& fo
   threshold(foregroundMask, foregroundMask, Prefs.forethreshold, 255, CV_THRESH_BINARY);
   foregroundMask.convertTo(foregroundMask, CV_8UC3);
 
-  imshow("foregroundmask", foregroundmask);
+  if ( ! isWindowClosed("stickletrack_masking_backgroundmask") )
+    imshow("stickletrack_masking_backgroundmask", foregroundmask);
 }
 
 void computeColorMask (const Mat& origframe, Mat& colormask) {
@@ -69,7 +73,8 @@ void computeColorMask (const Mat& origframe, Mat& colormask) {
   inRange(colormask, Scalar(Prefs.mincolor[0],Prefs.mincolor[1],Prefs.mincolor[2]), Scalar(Prefs.maxcolor[0], Prefs.maxcolor[1], Prefs.maxcolor[2]), colormask);
   colormask.convertTo(colormask, CV_8UC3);
 
-  imshow("colormask", colormask);
+  if ( ! isWindowClosed("stickletrack_masking_colormask") )
+    imshow("stickletrack_masking_colormask", colormask);
 }
 
 void computeScissors (const Mat& origframe, Mat& mScissors) {
@@ -90,7 +95,9 @@ void computeScissorsMask (Mat& scissorsmask) {
   else
     scissorsmask = Mat::ones(Props.height, Props.width, CV_8U);
 
-  imshow("scissorsmask", mScissors);
+  //if ( ! windowclosed_sissors )
+  if ( ! isWindowClosed("stickletrack_masking_scissorsmask") )
+    imshow("stickletrack_masking_scissorsmask", mScissors);
 }
 
 void masking_getCombinedMask(const Mat& origframe, Mat& combinedmask) {