Qt之OpenCV高斯背景建模

一、OpenCV库

Qt之OpenCV库已编译版下载地址:http://download.csdn.net/detail/checkylqy/9699892

也可自己在OpenCV官网下载最新版CMake自己编译:http://opencv.org/


二、高斯背景建模法(MOG大法)

CODE:

/**
  \file OpencvCamera.h

  \author Jack.Li
*/

#ifndef OPENCVCAMERA_H
#define OPENCVCAMERA_H

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/video/background_segm.hpp>

#include "BaseDialog.h"

class OpencvCamera : public BaseDialog {
public:
    OpencvCamera(QWidget * parent = 0);
    ~OpencvCamera();

    int showImage();
};

--------------------

/**
  \file OpencvCamera.cpp

  \author Jack.Li
*/

#include "OpencvCamera.h"

#include <QString>
#include <QMessageBox>

OpencvCamera::OpencvCamera(QWidget * parent)
    : BaseDialog(parent)
{
}

OpencvCamera::~OpencvCamera()
{
}

int OpencvCamera::showImage()
{
    // Open the video file
    cv::VideoCapture capture(0);
    // check if video successfully opened
    if (!capture.isOpened()) {
        QString text = "Camera isn't Open!";
        QString title = QString(tr("Warning!!!     "));
        QMessageBox::warning(this, title, text);
        return 0;
    }

    // current video frame
    cv::Mat frame;
    // foreground binary image
    cv::Mat foreground;

    cv::namedWindow("Extracted Foreground");
    cv::namedWindow("OpencvCamera");
    // The Mixture of Gaussian object
    cv::Ptr<cv::BackgroundSubtractorMOG2> mog = cv::createBackgroundSubtractorMOG2();
    bool stop(false);
    // for all frames in video
    while (!stop) {
        // read next frame if any
        if (!capture.read(frame))
            break;

        mog->apply(frame, foreground);
        // Complement the image
        cv::threshold(foreground,foreground,128,255,cv::THRESH_BINARY_INV);

        // show current frame
        cv::imshow("OpencvCamera", frame);
        // show foreground
        cv::imshow("Extracted Foreground",foreground);
        // introduce a delay
        // or press key to stop
        if (cv::waitKey(10)>=0)
                stop= true;
    }
    cv::waitKey();
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值