我正在开发一个使用Emgu和OpenCV的C#应用程序,它们都是2.9.0版本。我是OpenCV/Emgu的初学者,我需要一些帮助才能开始。
我有一个包含多个子图像的大图像。每个子图像包含多个区域,需要使用OpenCV以不同的方式进行处理。
大图像每秒更新几次。我计划使用pInvoke和memcpy来更新大图的位图。为了避免多次复制操作,我希望子图像与大图像共享像素数据,这样当大图像更新时,它们会自动获得新的像素数据。
子图像将在多个并行线程中同时处理。
我需要知道的是组织大图像对子图像和要处理的区域的最佳方法,这样我就可以通过一次调用memcpy来更新像素,然后在不同的线程上处理子图像中的区域。
发布于 2014-03-08 23:45:39
您没有解释为什么要使用较大图像的子图像,而不是使用几个经典图像,所以我认为这是有充分理由的。
我认为做到这一点的唯一方法是垂直堆叠子图像。实际上,OpenCV图像是逐行存储在存储器中的,因此,使子图像与大图像共享像素数据,同时能够有效地处理子图像的唯一方法是,子图像和大图像具有相同的行。如果这样做,就可以使用Mat::rowRange()提取Mat类型的子图像,然后可以根据需要进行处理。
https://stackoverflow.com/questions/22268967
复制相似问题