如何将交错的图像复制到单独的缓冲区

时间:2019-04-30 09:06:25

标签: c++ opencv intel-ipp

我正在寻找有关如何加快以下操作的建议。我可以使用某些STL库函数,opencv或Intel IPP函数吗?

我有一个3840 x 2160的图像缓冲区,其中包含BGRA像素打包的数据。图像是从两个相机源中插入的。即内存布局如下

left eye row 1 ;
right eye row 1 ;
left eye row 2 ;
right eye row 2 ;
...
left eye row 1080 ;
right eye row 1080 ;

现在我需要左右分割,以便在新图像缓冲区中,上半部分(上半部分)是左眼,下半部分(下半部分)是右眼。

新图片框架:

left eye row 1 ;
left eye row 2 ;
...
left eye row 1080 ;
right eye row 1 ;
right eye row 2 ;
...
right eye row 1080 ;

//here is my current code.  

unsigned char* data;   //data points to the original interleaved buffer


unsigned char top_bottom_frame [3840 * 2160 * 4];   //left right de-interleaved frame

const int stride = 4* 3840;

//copy left eye rows 
for(int i=0, j=0; i< 2160; i = i+2, ++j)
{
   memcpy(&top_bottom_frame[j*stride], data + i * stride, stride);
}

//copy right eye rows 
for(int i=1, j= 1080 ; i<2160; i = i+2, ++j)
{
   memcpy(&top_bottom_frame[j*stride], data + i * stride, stride);
}

0 个答案:

没有答案