Как скопировать чередованное изображение в отдельный буфер - PullRequest
1 голос
/ 30 апреля 2019

Я ищу несколько советов, как ускорить следующую операцию.Могу ли я использовать какую-нибудь библиотечную функцию 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);
}
...