C# - 单个图像的多线程处理(网络摄像头帧)

时间:2012-11-25 18:35:29

标签: c# multithreading image image-processing unsafe

我制作了一个程序,能够捕获网络摄像头帧并在运行不同的每像素算法后显示它们 - 例如使图像变灰。 目前我正在使用FastBitmap类(无法找到链接atm),它使用指针来设置并获取位图中的像素。

但是,我想让我的programm多线程,以便多个线程在同一个图像上工作。为此,我通过其BitmapData(每个线程一个部分)将图像分成几个部分,让不同的线程在其给定的部分BitmapData上工作。最后,“管理器”等待所有线程完成(加入)并交出结果图像。 这就是理论,但实际上这对我不起作用。

当我运行这个程序时,我得到了一些奇怪的错误,告诉我必须在重新使用它之前释放LHC,我正在访问非法内存,外部异常等......每次都是另一个我无法理解为什么但我认为BitmapData部分是主要问题,但我不想使用较慢的Mashal副本!

所以我的问题如下:

  • 是否可以使用不安全的指针方法在C#中进行分段多线程图像处理?
  • 如果是 - 怎么样?

至于图像处理库: 我不需要过滤器或一些默认的图像处理算法,但我需要自己的“每像素”算法 - 我甚至考虑过在我的程序中添加一个像素着色器。的xD

由于我的程序基于网络摄像头帧的转换,我需要尽可能快的算法。 我已经阅读了所有论坛帖子和教程等我可以找到的,但仍然不知道如何正确地使用不安全的代码,直到我使用此帐户最终在这里提出这个问题。

Robbepop

1 个答案:

答案 0 :(得分:0)

当然有可能:)

看看: https://github.com/dajuric/accord-net-extensions

此库包含您想要的内容: 并行处理器,用于对图像执行并行操作(例如颜色转换),是的,那些对图像进行操作的函数是不安全的(使用指针):

准备好NuGet包。