首页 > 解决方案 > 使用 Opencv C++ 对循环进行矢量化

问题描述

我的代码有很多这样的“for”循环:

for (size_t img = 0; img!=m_nbofImage; img++) 
  {
     for (size_t i = 0; i!=image_size; i++) 
       {
          dataImg[img* image_size+i]=data_matImg[i];
        }

为了提高我的代码的性能,我想使用 Opencv 但我不怎么做。

在您看来,如何优化此循环以提高性能?任何帮助是极大的赞赏。

标签: c++performanceopencvfor-loopoptimization

解决方案


例如,您应该使用 memcpy() 来复制整个块,而不是逐个像素地复制图像。这是否有效取决于您的变量类型。

也就是说,如果你想使用 OpenCV,它有一个优化的复制函数 copyTo()。通过将其与蒙版和/或 ROI 一起使用,您应该能够更快地复制图像。


推荐阅读