BackgroundSubtractorMOG2,我可以保存它的图像吗?我在保存BackgroundSubstracto

BackgroundSubtractorMOG2 , can i save image from it. i am getting error while saving images from BackgroundSubtractorMOG2

本文关键字:保存 BackgroundSubstracto 我可以 BackgroundSubtractorMOG2 图像      更新时间:2023-10-16

我使用backgroundMOG2保存带背景的图像,但程序显示了国家,我需要用backgorund保存图像。

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <opencv2/video/background_segm.hpp>

int main()
{
    cv::Mat frame;
    cv::Mat back;
    cv::Mat fore;
    //cv::Mat img;
    cv::VideoCapture cap("C:\Users\Pavilion\Documents\Visual Studio 2013\Projects\dynamic\sherlock outtakes.avi");
    cv::BackgroundSubtractorMOG2 bg;
    bg.set("nmixtures", 3);
    //bg.bShadowDetecction=false;
    std::vector<std::vector<cv::Point>>countours;
    //cv::imread("C:\Users\Pavilion\Documents\Visual Studio 2013\Projects\video\video\frames\frame122.jpg");
    //cv::VideoCapture Cap;
    //std::vector<std::vector<cv::point> >contours;
    cv::namedWindow("frame");
    cv::namedWindow("background");
    for (;;)
    {
        cap >> frame;
        bg.operator()(frame, fore);
        bg.getBackgroundImage(back);
        cv::erode(fore, fore, cv::Mat());
        cv::dilate(fore, fore, cv::Mat());
        cv::findContours(fore,countours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
        cv::drawContours(frame, countours, -1, cv::Scalar(0, 0, 255), 1);
        cv::imshow("frame", back);
        // cv::imwrite("background",back);
        cv::imshow("background", frame);
        if (cv::waitKey(30) >=0) break;
}
    return 0;
}

这是我在保存图像时出错的代码。

有人能帮我解决这个吗

您需要指定一个扩展名(jpg,png,…)。

例如:

cv::imwrite("background.jpg",back);