【问题标题】:Video Analysis to detect Object [ Realtime ]检测对象的视频分析[实时]
【发布时间】:2014-02-22 10:18:18
【问题描述】:

我想进行视频分析以检测一段时间内的运动。例如,我有我家外面车道的视频。我想检查它是否保持清洁。所以,我想检测周围的垃圾(以防它被清理)。我尝试了很多网站,他们说我必须拍摄视频并将其分成帧并对帧进行异或运算并找出对象的运动。

我试图为此查找示例代码,但找不到相同的代码。因此,如果有人使用 OpenCV/Xuggler/JavaCV/ 或任何软件和一些代码在该领域拥有专业知识,请您发帖以便我开始工作。

我的主要目标是开发一些软件,通​​过它我可以实时跟踪我家外面的垃圾,并检查谁在倾倒垃圾,以及是否正在清理垃圾。是否可以?任何想法/建议/意见表示赞赏。非常感谢!

我尝试过 OpenCV,但不知道如何将视频分割成帧并对其应用对象检测。

谢谢!

【问题讨论】:

标签: opencv video image-processing object-detection


【解决方案1】:

这是基于背景减法技术的代码。如果背景有任何变化(在这种情况下是您的车道),您将能够检测到它。

您应该有openCV示例提供的“背景减法”示例代码。

#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/background_segm.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>

#include <iostream>
#include <vector>

using namespace std;
using namespace cv;

int main()
{

    VideoCapture cap;
    bool update_bg_model = true;

    cap.open(0);
    cv::BackgroundSubtractorMOG2 bg;//(100, 3, 0.3, 5);
    bg.set ("nmixtures", 3);
    std::vector < std::vector < cv::Point > >contours;

    cv::namedWindow ("Frame");
    cv::namedWindow ("Background");

    Mat frame, fgmask, fgimg, backgroundImage;

    for(;;)
    {
        cap >> frame;
        bg.operator()(frame, fgimg);
        bg.getBackgroundImage (backgroundImage);
        cv::erode (fgimg, fgimg, cv::Mat ());
        cv::dilate (fgimg, fgimg, cv::Mat ());

        cv::findContours (fgimg, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
        cv::drawContours (frame, contours, -1, cv::Scalar (0, 0, 255), 2);

        cv::imshow ("Frame", frame);
        cv::imshow ("Background", backgroundImage);


        char k = (char)waitKey(30);
        if( k == 27 ) break;

    }

    return 0;
}

【讨论】:

    【解决方案2】:

    就您关于将视频拆分为帧的查询而言,您应该知道视频只不过是几个帧的集合。因此,每当您在 openCV 中使用 VideoCapture capture(videoFilename); 时,您都会从视频中捕获单个帧/图像。

    【讨论】:

      【解决方案3】:

      借助 google 的 opencv 和 javacv 库,这非常简单。逻辑只是使用线程不断地从网络摄像头中抓取帧,并在 2 个连续帧之间执行减法运算。如果两帧之间有任何变化,则会产生一个白色像素。黑色像素表示帧之间没有变化[未检测到运动]。完整的实现可以找到at here

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 1970-01-01
        • 2020-02-10
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 2017-06-19
        • 1970-01-01
        相关资源
        最近更新 更多