我正在寻找有关如何加快以下操作的建议。我可以使用某些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);
}