opencv_trail_effect.cpp: fix showing the background
authorAntonio Ospite <ao2@ao2.it>
Thu, 22 Feb 2018 12:12:04 +0000 (13:12 +0100)
committerAntonio Ospite <ao2@ao2.it>
Thu, 22 Feb 2018 14:41:51 +0000 (15:41 +0100)
When showing the background OpenCV would fail with this message:

  OpenCV Error: Assertion failed (channels() == CV_MAT_CN(dtype)) in copyTo, file /build/opencv-lY8WRY/opencv-3.2.0+dfsg/modules/core/src/copy.cpp, line 259
  terminate called after throwing an instance of 'cv::Exception'
    what():  /build/opencv-lY8WRY/opencv-3.2.0+dfsg/modules/core/src/copy.cpp:259: error: (-215) channels() == CV_MAT_CN(dtype) in function copyTo

Initializing the background to the same format of the input frame seems
to fix this.

opencv_trail_effect.cpp

index 5a4e928..5fec5dc 100644 (file)
@@ -176,7 +176,7 @@ int main(int argc, char *argv[])
        if (*segmentation_method == "background") {
                segmentation = new MOG2Segmentation(inputVideo, background_learn_frames);
                if (show_background) {
        if (*segmentation_method == "background") {
                segmentation = new MOG2Segmentation(inputVideo, background_learn_frames);
                if (show_background) {
-                       cv::Mat background;
+                       cv::Mat background(frame_size, inputVideo.get(CV_CAP_PROP_FORMAT));
 
                        ((MOG2Segmentation *)segmentation)->getBackgroundImage(background);
                        trail->setBackground(background);
 
                        ((MOG2Segmentation *)segmentation)->getBackgroundImage(background);
                        trail->setBackground(background);