1

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

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

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

所以我的问题如下:

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

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

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

强盗

4

1 回答 1

0

当然有可能:)

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

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

NuGet 包准备就绪。

于 2014-08-05T23:50:37.127 回答