Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >运动检测

运动检测
EN

Stack Overflow用户
提问于 2013-07-12 16:08:21
回答 2查看 21.3K关注 0票数 11

我真的无法理解这件事,所以我希望有人能帮我一把。

我正试图通过我的网络摄像头来检测C#中的运动。

到目前为止,我尝试了多个库(AForge Lib),但是失败了,因为我不知道如何使用它。

一开始,我只想比较当前帧的像素和最后一个像素,但结果证明它就像but **t :I

现在,我的摄像头运行一个事件"webcam_ImageCaptured“每次从网络摄像头的图片,这是像5-10 fps。

但是我找不到一种简单的方法来获得这两幅图像的区别,或者至少是一些正常工作的东西。

有没有人知道我如何能做到这一点相当简单(尽可能)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-12 19:20:21

使用您提到的库来实现运动检测是非常简单的。下面是一个AForge (版本2.2.4)的示例。它工作在一个视频文件,但你可以很容易地使它适应网络摄像头事件。

约翰斯是对的,但我认为,与这些图书馆玩耍可以简化对基本图像处理的理解。

我的应用程序以120 fast的速度在一台带有SSD的快速机器上处理720 p视频,在我的开发笔记本上处理大约50 fast的视频。

代码语言:javascript
代码运行次数:0
复制
public static void Main()
{    
    float motionLevel = 0F;
    System.Drawing.Bitmap bitmap = null;
    AForge.Vision.Motion.MotionDetector motionDetector = null;
    AForge.Video.FFMPEG.VideoFileReader reader = new AForge.Video.FFMPEG.VideoFileReader();    

    motionDetector = GetDefaultMotionDetector();

    reader.Open(@"C:\Temp.wmv");

    while (true)
    {
        bitmap = reader.ReadVideoFrame();
        if (bitmap == null) break;

        // motionLevel will indicate the amount of motion as a percentage.
        motionLevel = motionDetector.ProcessFrame(bitmap);

        // You can also access the detected motion blobs as follows:
        // ((AForge.Vision.Motion.BlobCountingObjectsProcessing) motionDetector.Processor).ObjectRectangles [i]...
    }

    reader.Close();
}

// Play around with this function to tweak results.
public static AForge.Vision.Motion.MotionDetector GetDefaultMotionDetector ()
{
    AForge.Vision.Motion.IMotionDetector detector = null;
    AForge.Vision.Motion.IMotionProcessing processor = null;
    AForge.Vision.Motion.MotionDetector motionDetector = null;

    //detector = new AForge.Vision.Motion.TwoFramesDifferenceDetector()
    //{
    //  DifferenceThreshold = 15,
    //  SuppressNoise = true
    //};

    //detector = new AForge.Vision.Motion.CustomFrameDifferenceDetector()
    //{
    //  DifferenceThreshold = 15,
    //  KeepObjectsEdges = true,
    //  SuppressNoise = true
    //};

    detector = new AForge.Vision.Motion.SimpleBackgroundModelingDetector()
    {
        DifferenceThreshold = 10,
        FramesPerBackgroundUpdate = 10,
        KeepObjectsEdges = true,
        MillisecondsPerBackgroundUpdate = 0,
        SuppressNoise = true
    };

    //processor = new AForge.Vision.Motion.GridMotionAreaProcessing()
    //{
    //  HighlightColor = System.Drawing.Color.Red,
    //  HighlightMotionGrid = true,
    //  GridWidth = 100,
    //  GridHeight = 100,
    //  MotionAmountToHighlight = 100F
    //};

    processor = new AForge.Vision.Motion.BlobCountingObjectsProcessing()
    {
        HighlightColor = System.Drawing.Color.Red,
        HighlightMotionRegions = true,
        MinObjectsHeight = 10,
        MinObjectsWidth = 10
    };

    motionDetector = new AForge.Vision.Motion.MotionDetector(detector, processor);

    return (motionDetector);
}
票数 12
EN

Stack Overflow用户

发布于 2013-07-12 16:20:33

运动检测是一个复杂的问题,需要大量的计算能力。

试着先限制你想要检测的东西。随着复杂性的增加:你想要检测是否存在运动吗?你想检测出多少运动吗?是否要检测图像的实际移动区域?

我想你只是想知道什么时候发生了变化:

  • 互相减去相邻帧
  • 计算所有像素差的所有平方和。
  • 除以像素数
  • 注意你的网络摄像头流的号码。它将有一定的地面噪音,并将显着上升时,什么东西移动。
  • 试着限制在一个特定的颜色通道,这可能会改善的东西。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17625712

复制
相关文章
使用 AForge.NET 做视频采集
AForge.NET 是基于C#设计的,在计算机视觉和人工智能方向拥有很强大功能的框架。btw... it's an open source framework. 附上官网地址: http://www.aforgenet.com/aforge/framework/ 。 今天要介绍的是AForge中的视频采集功能,这里的视频包括从摄像头等设备的输入和从视频文件的输入。 首先来认识一下 视频源播放器:VideoSourcePlayer,从摄像头和文件输入的视频,都会通过它来播放,并按帧(Frame)来输出Bit
Shao Meng
2018/04/28
2.1K0
在 WPF 中实现融合效果
融合效果是指对两个接近的元素进行高斯模糊后再提高对比度,使它们看上去“粘”在一起。在之前的一篇文章中,我使用 Win2D 实现了融合效果,效果如下:
dino.c
2022/10/05
1.3K0
在 WPF 中实现融合效果
WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件
在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项。不过,通常更有实际价值的是更复杂的 UWP 控件的引入,通常是一整个 Page。
walterlv
2020/02/10
5.9K0
在 WPF 中使用 x:Reference
发布于 2018-10-13 22:24 更新于 2018-12-14 01:54
walterlv
2020/02/10
1.5K0
WPF 在 DrawingContext 的 push 如何使用
如果在一个 DrawingContext 画出一个 DrawingVisual ,如何修改这个 DrawingVisual 的大小,对他进行变换?
林德熙
2022/08/04
4450
WPF 在 DrawingContext 的 push 如何使用
如果在一个 DrawingContext 画出一个 DrawingVisual ,如何修改这个 DrawingVisual 的大小,对他进行变换?
林德熙
2018/09/18
1.7K0
在.NET Core 3.0中的WPF中使用IOC图文教程
我们都知道.NET Core 3.0已经发布了第六个预览版,我们也知道.NET Core 3.0现在已经支持创建WPF项目了,刚好今天在写一个代码生成器的客户端的时候用到了WPF,所以就把WPF创建以及使用IOC的过程记录一下,希望能对大家有所帮助。当然文章实例我就以我曾阅读过的一篇文章的示例代码来进行演示了。
依乐祝
2019/07/03
8680
在.NET Core 3.0中的WPF中使用IOC图文教程
WPF 的 ElementName 在 ContextMenu 中无法绑定成功?试试使用 x:Reference!
发布于 2018-10-13 21:38 更新于 2018-10-14 04:25
walterlv
2020/02/10
3.1K0
在WPF桌面程序中使用ECharts展示图表
在WPF桌面系统需要实现仪表盘(dashboard是商业智能仪表盘(business intelligence dashboard,BI dashboard)的简称,它是一般商业智能都拥有的实现数据可视化的模块,是向企业展示度量信息和关键业务指标(KPI)现状的数据虚拟化工具。)形式的图表展示功能,研究了WPF开源的各个图件库,一般实现代码都比较复杂,灵活性不够,展示图表效果也不尽人意。后来想到ECharts,Echarts (ECharts)是百度公司出品的,算是百度不可多得的良心之作,使用方便灵活,而且
程序你好
2018/07/20
3.1K0
在 WPF 程序中应用 Windows 10 真•亚克力效果
从 Windows 10 (1803) 开始,Win32 应用也可以有 API 来实现原生的亚克力效果了。不过相比于 UWP 来说,可定制性会差很多。
walterlv
2023/10/22
5520
在 WPF 程序中应用 Windows 10 真•亚克力效果
学习WPF——了解WPF中的XAML
XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象 XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF顶级元素的一种,还有另外两种顶级元素Page和App
liulun
2018/01/12
2K0
解决WPF在XP上使用微软雅黑字体
WPF项目,全局设置的微软雅黑,但是XP上没有这个字体,默认显示的是宋体。开始的思路是WPF可以将字体作为资源,在程序中使用,但是微软雅黑有两个文件,mysh, TTF和myshbd,TTF,单独加载
kiki.
2022/09/29
1K0
使用 Uno Islands 在现有 WPF 里面嵌入 Uno 框架
随着 2022 9 月份 Uno 发布了 4.5 版本,现有的 WPF 应用多了一个新的开发模式,那就是通过 Uno Islands 技术,在现有的 WPF 应用里面嵌入 Uno 应用。通过此方式可以辅助在现有的 WPF 项目里面,部分功能迁入 Uno 项目,或者是某些新开发功能通过 Uno 实现,从而利用 Uno 跨平台的能力,逐个功能点支持跨平台功能。逐个小功能接入的方式,让开发者不需要为一次性迁移一个庞大的项目而烦恼
林德熙
2023/04/07
6280
WPF Visifire使用
1.Visifire的创建需要引用的DLL包【WPFToolkit.dll;WPFVisifire.Charts;WPFVisifire.Gauges(这个以后会用到)】
全栈程序员站长
2022/09/13
4890
WPF Visifire使用
WPF使用URL协议实现网页中打开应用
网页唤起指定软件,其实就是利用URL来执行一个关键字Key,这个Key是注册表中的一个键,Value是指定路径的exe,亦可携带参数启动exe;
码客说
2022/10/28
1.1K0
WPF 使用 SharpDX
先介绍一下 SharpDx ,一个底层封装的 DirectX 库,支持 AnyCpu ,支持 Direct3D9, Direct3D11, Direct3D12,Direct2D1。支持 win32 程序和商店程序。
林德熙
2018/09/19
1.3K0
WPF 使用 SharpDX
WPF中的MatrixTransform
WPF中的MatrixTransform            周银辉 虽然在WPF中可以使用TranslateTransform、RotateTransform、ScaleTransform等进行
菩提树下的杨过
2018/01/22
1.4K0
WPF中的MatrixTransform
WPF中ListView排序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
5160
WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)
Windows Community Toolkit 再次更新到 5.0。以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了。
walterlv
2020/02/10
4.7K0
修改WPF中connectionString[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说修改WPF中connectionString[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/07/19
4440

相似问题

WPF使用AForge创建视频

12

在WPF应用程序上使用WebCam实现AForge.Net

48

C# WPF AForge :如何使视频平滑?

18

在AForge库中使用ImageProcessingLog

10

使用Aforge保存图像

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文