在Emgu OpenCV中使用多个子图像处理图像的最佳方法



我正在使用使用Emgu和OpenCV的C#应用程序,均为版本2.9.0。我是OpenCV/Emgu的初学者,我需要一些帮助才能让我前进。

我有一个包含多个子图像的大图像。每个子图像都包含许多需要以不同方式处理的区域。

大图每秒几次更新。我计划使用Pinvoke和Memcpy来更新大图像的位图。为了避免多个复制操作,我希望子图像与大图像共享像素数据,因此当大型图像更新时,它们会自动获取新的像素数据。

子图像将在多个并行线程中同时处理。

我需要知道的是组织大型图像与要处理的区域和区域的最佳方法,以便我可以用一个调用到memcpy的一个调用,然后在不同线程上的子图像中进行处理区域。

您没有解释为什么要使用较大图像的子图像而不是使用几个经典图像,所以我认为有一个很好的理由。

我认为这样做的唯一方法是垂直堆叠子图像。实际上,OPENCV映像是通过行中的行存储在内存中的,因此使子图像与大图像共享像素数据的唯一方法,而能够有效地处理子图像是图像和大图像具有相同的行。如果执行此操作,则可以使用Mat::rowRange()提取类型Mat的子图像,然后可以根据需要进行处理。

最新更新