Permalink
Browse files

bgslibrary v1.9.0

35 algorithms available
  • Loading branch information...
1 parent 6adf9e7 commit 9a6dabf3b53990ed8c5226d7ba5c3a5f242c55ab @andrewssobral committed Feb 16, 2014
Showing with 39,237 additions and 0 deletions.
  1. +52 −0 CMakeLists.txt
  2. +674 −0 COPYING.txt
  3. +22 −0 Config.h
  4. +182 −0 Demo.cpp
  5. +557 −0 FrameProcessor.cpp
  6. +235 −0 FrameProcessor.h
  7. +26 −0 IFrameProcessor.h
  8. +12 −0 LICENSE.txt
  9. +82 −0 Main.cpp
  10. +146 −0 PreProcessor.cpp
  11. +49 −0 PreProcessor.h
  12. +16 −0 README.txt
  13. +130 −0 VideoAnalysis.cpp
  14. +45 −0 VideoAnalysis.h
  15. +275 −0 VideoCapture.cpp
  16. +63 −0 VideoCapture.h
  17. +39 −0 bgslibrary_vs2010_opencv.txt
  18. +38 −0 config/FrameProcessor.xml
  19. +6 −0 config/PreProcessor.xml
  20. +13 −0 config/VideoCapture.xml
  21. BIN dataset/video.avi
  22. +49 −0 demos/DemoFrameDifferenceBGS.cpp
  23. +49 −0 demos/DemoMultiLayerBGS.cpp
  24. +101 −0 package_analysis/ForegroundMaskAnalysis.cpp
  25. +42 −0 package_analysis/ForegroundMaskAnalysis.h
  26. +111 −0 package_bgs/AdaptiveBackgroundLearning.cpp
  27. +50 −0 package_bgs/AdaptiveBackgroundLearning.h
  28. +131 −0 package_bgs/AdaptiveSelectiveBackgroundLearning.cpp
  29. +49 −0 package_bgs/AdaptiveSelectiveBackgroundLearning.h
  30. +83 −0 package_bgs/FrameDifferenceBGS.cpp
  31. +44 −0 package_bgs/FrameDifferenceBGS.h
  32. +99 −0 package_bgs/GMG.cpp
  33. +45 −0 package_bgs/GMG.h
  34. +33 −0 package_bgs/IBGS.h
  35. +95 −0 package_bgs/MixtureOfGaussianV1BGS.cpp
  36. +47 −0 package_bgs/MixtureOfGaussianV1BGS.h
  37. +98 −0 package_bgs/MixtureOfGaussianV2BGS.cpp
  38. +47 −0 package_bgs/MixtureOfGaussianV2BGS.h
  39. +79 −0 package_bgs/StaticFrameDifferenceBGS.cpp
  40. +45 −0 package_bgs/StaticFrameDifferenceBGS.h
  41. +122 −0 package_bgs/WeightedMovingMeanBGS.cpp
  42. +47 −0 package_bgs/WeightedMovingMeanBGS.h
  43. +161 −0 package_bgs/WeightedMovingVarianceBGS.cpp
  44. +48 −0 package_bgs/WeightedMovingVarianceBGS.h
  45. +128 −0 package_bgs/ae/KDE.cpp
  46. +58 −0 package_bgs/ae/KDE.h
  47. +116 −0 package_bgs/ae/KernelTable.cpp
  48. +71 −0 package_bgs/ae/KernelTable.h
  49. +1,160 −0 package_bgs/ae/NPBGSubtractor.cpp
  50. +154 −0 package_bgs/ae/NPBGSubtractor.h
  51. +127 −0 package_bgs/ae/NPBGmodel.cpp
  52. +111 −0 package_bgs/ae/NPBGmodel.h
  53. +166 −0 package_bgs/av/TBackground.cpp
  54. +51 −0 package_bgs/av/TBackground.h
  55. +380 −0 package_bgs/av/TBackgroundVuMeter.cpp
  56. +67 −0 package_bgs/av/TBackgroundVuMeter.h
  57. +116 −0 package_bgs/av/VuMeter.cpp
  58. +53 −0 package_bgs/av/VuMeter.h
  59. +87 −0 package_bgs/ck/LbpMrf.cpp
  60. +44 −0 package_bgs/ck/LbpMrf.h
  61. +40 −0 package_bgs/ck/MEDefs.cpp
  62. +83 −0 package_bgs/ck/MEDefs.hpp
  63. +508 −0 package_bgs/ck/MEHistogram.cpp
  64. +348 −0 package_bgs/ck/MEHistogram.hpp
  65. +1,472 −0 package_bgs/ck/MEImage.cpp
  66. +999 −0 package_bgs/ck/MEImage.hpp
  67. +1,425 −0 package_bgs/ck/MotionDetection.cpp
  68. +401 −0 package_bgs/ck/MotionDetection.hpp
  69. +135 −0 package_bgs/ck/README.TXT
  70. +286 −0 package_bgs/ck/block.h
  71. +80 −0 package_bgs/ck/graph.cpp
  72. +180 −0 package_bgs/ck/graph.h
  73. +514 −0 package_bgs/ck/maxflow.cpp
  74. +54 −0 package_bgs/db/IndependentMultimodalBGS.cpp
  75. +29 −0 package_bgs/db/IndependentMultimodalBGS.h
  76. +748 −0 package_bgs/db/imbs.cpp
  77. +178 −0 package_bgs/db/imbs.hpp
  78. +140 −0 package_bgs/dp/AdaptiveMedianBGS.cpp
  79. +89 −0 package_bgs/dp/AdaptiveMedianBGS.h
  80. +67 −0 package_bgs/dp/Bgs.h
  81. +59 −0 package_bgs/dp/BgsParams.h
  82. +104 −0 package_bgs/dp/DPAdaptiveMedianBGS.cpp
  83. +56 −0 package_bgs/dp/DPAdaptiveMedianBGS.h
  84. +106 −0 package_bgs/dp/DPEigenbackgroundBGS.cpp
  85. +56 −0 package_bgs/dp/DPEigenbackgroundBGS.h
  86. +105 −0 package_bgs/dp/DPGrimsonGMMBGS.cpp
  87. +56 −0 package_bgs/dp/DPGrimsonGMMBGS.h
  88. +105 −0 package_bgs/dp/DPMeanBGS.cpp
  89. +56 −0 package_bgs/dp/DPMeanBGS.h
  90. +107 −0 package_bgs/dp/DPPratiMediodBGS.cpp
  91. +57 −0 package_bgs/dp/DPPratiMediodBGS.h
  92. +156 −0 package_bgs/dp/DPTextureBGS.cpp
  93. +60 −0 package_bgs/dp/DPTextureBGS.h
  94. +105 −0 package_bgs/dp/DPWrenGABGS.cpp
  95. +56 −0 package_bgs/dp/DPWrenGABGS.h
  96. +104 −0 package_bgs/dp/DPZivkovicAGMMBGS.cpp
  97. +56 −0 package_bgs/dp/DPZivkovicAGMMBGS.h
  98. +190 −0 package_bgs/dp/Eigenbackground.cpp
  99. +101 −0 package_bgs/dp/Eigenbackground.h
  100. +57 −0 package_bgs/dp/Error.cpp
  101. +36 −0 package_bgs/dp/Error.h
  102. +332 −0 package_bgs/dp/GrimsonGMM.cpp
  103. +150 −0 package_bgs/dp/GrimsonGMM.h
  104. +76 −0 package_bgs/dp/Image.cpp
  105. +364 −0 package_bgs/dp/Image.h
  106. +131 −0 package_bgs/dp/MeanBGS.cpp
  107. +98 −0 package_bgs/dp/MeanBGS.h
  108. +276 −0 package_bgs/dp/PratiMediodBGS.cpp
  109. +142 −0 package_bgs/dp/PratiMediodBGS.h
  110. +153 −0 package_bgs/dp/TextureBGS.cpp
  111. +55 −0 package_bgs/dp/TextureBGS.h
  112. +174 −0 package_bgs/dp/WrenGA.cpp
  113. +120 −0 package_bgs/dp/WrenGA.h
  114. +411 −0 package_bgs/dp/ZivkovicAGMM.cpp
  115. +160 −0 package_bgs/dp/ZivkovicAGMM.h
  116. +216 −0 package_bgs/jmo/BGS.h
  117. +158 −0 package_bgs/jmo/BackgroundSubtractionAPI.h
  118. +1,490 −0 package_bgs/jmo/BlobExtraction.cpp
  119. +76 −0 package_bgs/jmo/BlobExtraction.h
  120. +62 −0 package_bgs/jmo/BlobLibraryConfiguration.h
  121. +920 −0 package_bgs/jmo/BlobResult.cpp
  122. +213 −0 package_bgs/jmo/BlobResult.h
  123. +2,128 −0 package_bgs/jmo/CMultiLayerBGS.cpp
  124. +313 −0 package_bgs/jmo/CMultiLayerBGS.h
  125. +314 −0 package_bgs/jmo/LocalBinaryPattern.cpp
  126. +103 −0 package_bgs/jmo/LocalBinaryPattern.h
  127. +332 −0 package_bgs/jmo/MultiLayerBGS.cpp
  128. +101 −0 package_bgs/jmo/MultiLayerBGS.h
  129. +224 −0 package_bgs/jmo/OpenCvDataConversion.h
  130. +1,149 −0 package_bgs/jmo/blob.cpp
  131. +853 −0 package_bgs/jmo/blob.h
  132. +87 −0 package_bgs/lb/BGModel.cpp
  133. +78 −0 package_bgs/lb/BGModel.h
  134. +210 −0 package_bgs/lb/BGModelFuzzyGauss.cpp
  135. +75 −0 package_bgs/lb/BGModelFuzzyGauss.h
  136. +298 −0 package_bgs/lb/BGModelFuzzySom.cpp
  137. +95 −0 package_bgs/lb/BGModelFuzzySom.h
  138. +200 −0 package_bgs/lb/BGModelGauss.cpp
  139. +73 −0 package_bgs/lb/BGModelGauss.h
  140. +309 −0 package_bgs/lb/BGModelMog.cpp
  141. +83 −0 package_bgs/lb/BGModelMog.h
  142. +291 −0 package_bgs/lb/BGModelSom.cpp
  143. +92 −0 package_bgs/lb/BGModelSom.h
  144. +109 −0 package_bgs/lb/LBAdaptiveSOM.cpp
  145. +56 −0 package_bgs/lb/LBAdaptiveSOM.h
  146. +109 −0 package_bgs/lb/LBFuzzyAdaptiveSOM.cpp
  147. +56 −0 package_bgs/lb/LBFuzzyAdaptiveSOM.h
  148. +105 −0 package_bgs/lb/LBFuzzyGaussian.cpp
  149. +55 −0 package_bgs/lb/LBFuzzyGaussian.h
  150. +105 −0 package_bgs/lb/LBMixtureOfGaussians.cpp
  151. +55 −0 package_bgs/lb/LBMixtureOfGaussians.h
  152. +100 −0 package_bgs/lb/LBSimpleGaussian.cpp
  153. +54 −0 package_bgs/lb/LBSimpleGaussian.h
  154. +99 −0 package_bgs/lb/Types.h
  155. +26 −0 package_bgs/my/MyBGS.cpp
  156. +22 −0 package_bgs/my/MyBGS.h
  157. +586 −0 package_bgs/pt/PBAS.cpp
  158. +207 −0 package_bgs/pt/PBAS.h
  159. +124 −0 package_bgs/pt/PixelBasedAdaptiveSegmenter.cpp
  160. +58 −0 package_bgs/pt/PixelBasedAdaptiveSegmenter.h
  161. +2,062 −0 package_bgs/sjn/SJN_MultiCueBGS.cpp
  162. +243 −0 package_bgs/sjn/SJN_MultiCueBGS.h
  163. +204 −0 package_bgs/tb/FuzzyChoquetIntegral.cpp
  164. +55 −0 package_bgs/tb/FuzzyChoquetIntegral.h
  165. +204 −0 package_bgs/tb/FuzzySugenoIntegral.cpp
  166. +55 −0 package_bgs/tb/FuzzySugenoIntegral.h
  167. +511 −0 package_bgs/tb/FuzzyUtils.cpp
  168. +54 −0 package_bgs/tb/FuzzyUtils.h
  169. +339 −0 package_bgs/tb/MRF.cpp
  170. +107 −0 package_bgs/tb/MRF.h
  171. +521 −0 package_bgs/tb/PerformanceUtils.cpp
  172. +54 −0 package_bgs/tb/PerformanceUtils.h
  173. +351 −0 package_bgs/tb/PixelUtils.cpp
  174. +61 −0 package_bgs/tb/PixelUtils.h
  175. +337 −0 package_bgs/tb/T2FGMM.cpp
  176. +135 −0 package_bgs/tb/T2FGMM.h
  177. +111 −0 package_bgs/tb/T2FGMM_UM.cpp
  178. +58 −0 package_bgs/tb/T2FGMM_UM.h
  179. +111 −0 package_bgs/tb/T2FGMM_UV.cpp
  180. +58 −0 package_bgs/tb/T2FGMM_UV.h
  181. +432 −0 package_bgs/tb/T2FMRF.cpp
  182. +164 −0 package_bgs/tb/T2FMRF.h
  183. +140 −0 package_bgs/tb/T2FMRF_UM.cpp
  184. +64 −0 package_bgs/tb/T2FMRF_UM.h
  185. +140 −0 package_bgs/tb/T2FMRF_UV.cpp
  186. +64 −0 package_bgs/tb/T2FMRF_UV.h
  187. +3 −0 run_camera.sh
  188. +3 −0 run_demo.sh
  189. +3 −0 run_video.sh
  190. +20 −0 vs2010/bgslibrary.sln
  191. BIN vs2010/bgslibrary.suo
  192. +220 −0 vs2010/bgslibrary.vcxproj
  193. +444 −0 vs2010/bgslibrary.vcxproj.filters
  194. +8 −0 vs2010/bgslibrary.vcxproj.user
View
@@ -0,0 +1,52 @@
+
+cmake_minimum_required(VERSION 2.8)
+
+project(bgs)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CSS_FLAGS} -std=gnu++0x")
+
+find_package(OpenCV REQUIRED)
+
+if(${OpenCV_VERSION} VERSION_LESS 2.3.1)
+ message (FATAL_ERROR "OpenCV version is not compatible: ${OpenCV_VERSION}")
+endif()
+
+file(GLOB sources FrameProcessor.cpp PreProcessor.cpp VideoAnalysis.cpp VideoCapture.cpp)
+file(GLOB main Main.cpp)
+file(GLOB demo Demo.cpp)
+
+list(REMOVE_ITEM sources ${demo})
+
+file(GLOB_RECURSE analysis package_analysis/*.cpp)
+file(GLOB_RECURSE bgs package_bgs/*.cpp)
+file(GLOB_RECURSE bgs_include package_bgs/*.h)
+
+# GMG is not available in older OpenCV versions
+if(${OpenCV_VERSION} VERSION_LESS 2.4.3)
+ file(GLOB gmg package_bgs/GMG.cpp)
+ list(REMOVE_ITEM bgs ${gmg})
+endif()
+
+include_directories(${CMAKE_SOURCE_DIR})
+
+add_library(bgs SHARED ${sources} ${bgs} ${analysis})
+target_link_libraries(bgs ${OpenCV_LIBS})
+set_property(TARGET bgs PROPERTY PUBLIC_HEADER ${bgs_include})
+
+add_executable(bgs_bin ${main})
+target_link_libraries(bgs_bin ${OpenCV_LIBS} bgs)
+set_target_properties(bgs_bin
+ PROPERTIES OUTPUT_NAME bgs)
+
+add_executable(bgs_demo ${demo})
+target_link_libraries(bgs_demo ${OpenCV_LIBS} bgs)
+
+INSTALL(TARGETS bgs
+ bgs_demo
+ bgs_bin
+ RUNTIME DESTINATION bin COMPONENT app
+ LIBRARY DESTINATION lib COMPONENT runtime
+ ARCHIVE DESTINATION lib COMPONENT runtime
+ PUBLIC_HEADER DESTINATION include/package_bgs COMPONENT dev
+ FRAMEWORK DESTINATION "/Library/Frameworks"
+)
View

Large diffs are not rendered by default.

Oops, something went wrong.
View
@@ -0,0 +1,22 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+const int KEY_REPEAT = 'r';
+const int KEY_SPACE = 32;
+const int KEY_ESC = 27;
+const int KEY_ESC2 = 'q';
View
182 Demo.cpp
@@ -0,0 +1,182 @@
+/*
+This file is part of BGSLibrary.
+
+BGSLibrary is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+BGSLibrary is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with BGSLibrary. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include <iostream>
+#include <cv.h>
+#include <highgui.h>
+
+#include "package_bgs/FrameDifferenceBGS.h"
+#include "package_bgs/StaticFrameDifferenceBGS.h"
+#include "package_bgs/WeightedMovingMeanBGS.h"
+#include "package_bgs/WeightedMovingVarianceBGS.h"
+#include "package_bgs/MixtureOfGaussianV1BGS.h"
+#include "package_bgs/MixtureOfGaussianV2BGS.h"
+#include "package_bgs/AdaptiveBackgroundLearning.h"
+#include "package_bgs/AdaptiveSelectiveBackgroundLearning.h"
+
+#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#include "package_bgs/GMG.h"
+#endif
+
+#include "package_bgs/dp/DPAdaptiveMedianBGS.h"
+#include "package_bgs/dp/DPGrimsonGMMBGS.h"
+#include "package_bgs/dp/DPZivkovicAGMMBGS.h"
+#include "package_bgs/dp/DPMeanBGS.h"
+#include "package_bgs/dp/DPWrenGABGS.h"
+#include "package_bgs/dp/DPPratiMediodBGS.h"
+#include "package_bgs/dp/DPEigenbackgroundBGS.h"
+#include "package_bgs/dp/DPTextureBGS.h"
+
+#include "package_bgs/tb/T2FGMM_UM.h"
+#include "package_bgs/tb/T2FGMM_UV.h"
+#include "package_bgs/tb/T2FMRF_UM.h"
+#include "package_bgs/tb/T2FMRF_UV.h"
+#include "package_bgs/tb/FuzzySugenoIntegral.h"
+#include "package_bgs/tb/FuzzyChoquetIntegral.h"
+
+#include "package_bgs/lb/LBSimpleGaussian.h"
+#include "package_bgs/lb/LBFuzzyGaussian.h"
+#include "package_bgs/lb/LBMixtureOfGaussians.h"
+#include "package_bgs/lb/LBAdaptiveSOM.h"
+#include "package_bgs/lb/LBFuzzyAdaptiveSOM.h"
+
+#if !defined(_WIN32)
+// Currently this method works only on Linux platform.
+#include "package_bgs/ck/LbpMrf.h"
+#endif
+
+#include "package_bgs/jmo/MultiLayerBGS.h"
+#include "package_bgs/pt/PixelBasedAdaptiveSegmenter.h"
+#include "package_bgs/av/VuMeter.h"
+#include "package_bgs/ae/KDE.h"
+#include "package_bgs/db/IndependentMultimodalBGS.h"
+#include "package_bgs/sjn/SJN_MultiCueBGS.h"
+
+void main(int argc, char **argv)
+{
+ std::cout << "Using OpenCV " << CV_MAJOR_VERSION << "." << CV_MINOR_VERSION << "." << CV_SUBMINOR_VERSION << std::endl;
+
+ CvCapture *capture = 0;
+ int resize_factor = 100;
+
+ if(argc > 1)
+ {
+ std::cout << "Openning: " << argv[1] << std::endl;
+ capture = cvCaptureFromAVI(argv[1]);
+ }
+ else
+ {
+ capture = cvCaptureFromCAM(0);
+ resize_factor = 50; // set size = 50% of original image
+ }
+
+ if(!capture)
+ {
+ std::cerr << "Cannot initialize video!" << std::endl;
+ return;
+ }
+
+ IplImage *frame_aux = cvQueryFrame(capture);
+ IplImage *frame = cvCreateImage(cvSize((int)((frame_aux->width*resize_factor)/100) , (int)((frame_aux->height*resize_factor)/100)), frame_aux->depth, frame_aux->nChannels);
+ cvResize(frame_aux, frame);
+
+ /* Background Subtraction Methods */
+ IBGS *bgs;
+
+ /*** Default Package ***/
+ bgs = new FrameDifferenceBGS;
+ //bgs = new StaticFrameDifferenceBGS;
+ //bgs = new WeightedMovingMeanBGS;
+ //bgs = new WeightedMovingVarianceBGS;
+ //bgs = new MixtureOfGaussianV1BGS;
+ //bgs = new MixtureOfGaussianV2BGS;
+ //bgs = new AdaptiveBackgroundLearning;
+ //bgs = new AdaptiveSelectiveBackgroundLearning;
+ //bgs = new GMG;
+
+ /*** DP Package (thanks to Donovan Parks) ***/
+ //bgs = new DPAdaptiveMedianBGS;
+ //bgs = new DPGrimsonGMMBGS;
+ //bgs = new DPZivkovicAGMMBGS;
+ //bgs = new DPMeanBGS;
+ //bgs = new DPWrenGABGS;
+ //bgs = new DPPratiMediodBGS;
+ //bgs = new DPEigenbackgroundBGS;
+ //bgs = new DPTextureBGS;
+
+ /*** TB Package (thanks to Thierry Bouwmans, Fida EL BAF and Zhenjie Zhao) ***/
+ //bgs = new T2FGMM_UM;
+ //bgs = new T2FGMM_UV;
+ //bgs = new T2FMRF_UM;
+ //bgs = new T2FMRF_UV;
+ //bgs = new FuzzySugenoIntegral;
+ //bgs = new FuzzyChoquetIntegral;
+
+ /*** JMO Package (thanks to Jean-Marc Odobez) ***/
+ //bgs = new MultiLayerBGS;
+
+ /*** PT Package (thanks to Martin Hofmann, Philipp Tiefenbacher and Gerhard Rigoll) ***/
+ //bgs = new PixelBasedAdaptiveSegmenter;
+
+ /*** LB Package (thanks to Laurence Bender) ***/
+ //bgs = new LBSimpleGaussian;
+ //bgs = new LBFuzzyGaussian;
+ //bgs = new LBMixtureOfGaussians;
+ //bgs = new LBAdaptiveSOM;
+ //bgs = new LBFuzzyAdaptiveSOM;
+
+ /*** LBP-MRF Package (thanks to Csaba Kertész) ***/
+ //bgs = new LbpMrf;
+
+ /*** AV Package (thanks to Lionel Robinault and Antoine Vacavant) ***/
+ //bgs = new VuMeter;
+
+ /*** EG Package (thanks to Ahmed Elgammal) ***/
+ //bgs = new KDE;
+
+ /*** DB Package (thanks to Domenico Daniele Bloisi) ***/
+ //bgs = new IndependentMultimodalBGS;
+
+ /*** SJN Package (thanks to SeungJong Noh) ***/
+ //bgs = new SJN_MultiCueBGS;
+
+ int key = 0;
+ while(key != 'q')
+ {
+ frame_aux = cvQueryFrame(capture);
+ if(!frame_aux) break;
+
+ cvResize(frame_aux, frame);
+
+ cv::Mat img_input(frame);
+ cv::imshow("input", img_input);
+
+ cv::Mat img_mask;
+ cv::Mat img_bkgmodel;
+ bgs->process(img_input, img_mask, img_bkgmodel); // by default, it shows automatically the foreground mask image
+
+ //if(!img_mask.empty())
+ // cv::imshow("Foreground", img_mask);
+ // do something
+
+ key = cvWaitKey(33);
+ }
+
+ delete bgs;
+
+ cvDestroyAllWindows();
+ cvReleaseCapture(&capture);
+}
Oops, something went wrong.

0 comments on commit 9a6dabf

Please sign in to comment.