首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实时视频监控程序开发的请求技术

实时视频监控程序开发的请求技术
EN

Stack Overflow用户
提问于 2014-02-26 14:33:37
回答 2查看 251关注 0票数 0

我正在用c#开发与实时监控相关的程序,就像一项研究.

我不打算使用像opencv或emgu...etc这样的库,因为在某些情况下,我需要对像素进行详细的调整,或者在访问所有像素后进行处理。

现在,我的算法基本上是使用LockbitsUnlockBits将像素值复制到一个二维字节数组中,然后我可以从那个字节数组中检索数据。

对于该数组,我使用自定义结构声明它:

代码语言:javascript
运行
复制
struct Pixel
{
  Byte B;
  Byte G;
  Byte R;
}

因此,当我处理RGB位图时,我可以简单地使用:bmp[i,j].R, bmp[i,j].G, bmp[i,j].B分别访问RGB值。

然而,这种方法会造成很长的处理时间,我想,当位图的分辨率很大时,根据我的经验,320x240是很好的,但是当我处理704x480时,整个系统就卡住了。

我想知道是否有其他方法可以在一次访问所有像素的速度比我的更快,或者有另一种技术来进行实时视频监控?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 14:49:42

这里有很多可谈的..。

1)如您所述,将其固定在内存中,然后通过指针访问它,而不是检查.NET数组之类的数据结构。

2)如果您正在以特定的模式访问数据,请考虑转换/预处理数据。位图通常按行存储在内存中,但如果按列进行访问,则性能会下降。如果您需要按列访问,或者一次访问一个通道,例如,在处理之前,旋转图像或分离通道。

3)提高像素处理代码的效率。

4)并行化(如果可能)。

5)使用GPU :-)

在OpenCV中有很好的.NET包装器,恩古就是其中之一,它提供了免费版本的CUDA支持。

票数 0
EN

Stack Overflow用户

发布于 2014-02-26 14:41:58

这要看你做什么了。

FIrst、不安全代码和指针是一种更快的访问方式。可以大大加快速度。

其次,根据您所做的,将其加载到d3d表面并使用- directx。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22044522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档