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.
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);