当前位置: 首页 > 知识库问答 >
问题:

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

辛健
2023-03-14

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

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

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

所以我的问题如下:

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

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

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

罗伯普

共有1个答案

裴欣然
2023-03-14

当然有可能:)

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

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

Nuget包准备好了。

 类似资料:
  • 我正在开发一个web应用程序,它可以浏览和拍摄本地照片,我还想通过相机拍摄图像。我使用下面的代码,我可以捕捉设备摄像头。 现在,我想获得图像和onchangeevent,转换为base64,并希望在该页面中显示。 好心帮我伙计们!

  • 问题内容: 我想从网络摄像头捕获单个图像并将其保存到磁盘。我想用Java或Python(最好是Java)做到这一点。我想要在64位Win7和32位Linux上都可以使用的东西。 编辑:我使用Python 3.x,而不是2.x 因为在其他地方我都看到这个问题,使人们设法感到困惑,所以我将明确说明一些事情: 我不想使用处理 除上述语言外,我不想使用任何其他语言 我确实想以任何方式,形状或形式在屏幕上显

  • 问题内容: 如何连续从摄像头捕获图像? 我想尝试对象识别(也许使用Java Media Framework)。 我当时正在考虑创建两个线程 一个线程: 节点1:捕获实时图像 节点2:将图片另存为“ 1.jpg” 节点3:等待5秒 节点4:重复… 其他线程: 节点1:等到捕获图像 节点2:使用“ 1.jpg”获取每个像素的颜色 节点3:将数据保存在数组中 节点4:重复… 问题答案: 此JavaCV实

  • 我目前正在做一个项目,从网络摄像头捕捉视频,并通过UDP发送编码流来做实时流。 有人说从cap.read得到的帧已经是解码帧,我不知道这是如何以及何时发生的。我想要的是编码的帧或流。我应该怎么做才能得到它?我应该再编码一次吗?

  • 我正在做一个项目,试图探测特定表面(竞技场)上的绿色和红色圆圈。当我尝试使用数字版本的竞技场(PNG图像)时,我可以成功地检测到两个彩色圆圈。 现在,我将这个竞技场打印在一个flex上(没有这两个彩色圆圈),并手动在上面放置彩色圆形硬币。但在通过1.3 MP的网络摄像头捕捉到它的图像后,颜色检测无法工作,并给出了错误的结果。 以下是通过网络摄像头拍摄的打印竞技场: 为什么没有检测到颜色?我需要对网

  • 对于我正在进行的计算机视觉项目,我需要使用Logitech C920网络摄像头抓取图像。我使用OpenCV的视频捕获来实现这一点,但我面临的问题是,我在某个时刻拍摄的图像没有显示相机看到的最新情况。也就是说,如果我在时间戳t处拍摄一张图像,它显示了相机在时间戳(t-delta)处看到的东西,也就是说。 为此,我编写了一个程序,使计数器递增并在屏幕上显示。我把相机对准屏幕,让它录下来。当计数器达到某