Как перевернуть на 180 градусов RGB в буфере?

301
13 мая 2017, 21:03

Некоторые веб-камеры снимают в перевёрнутом режиме. В программе нужно переворачивать такие камеры. Используемый алгоритм отражает изображение вертикально, в связи с чем меняется горизонтальное позиционирование:

void Camera::FlipFrameV(unsigned char * Source, unsigned short Width, unsigned short Height, unsigned char * Output){
    unsigned short Colors = 3;
    for (unsigned short X = 0; X < Width; X++){
        for (unsigned short Y = 0; Y < Height; Y++){
            for (unsigned short P = 0; P < Colors; P++){
                Output[(X + Y * Width) * Colors + P] = Source[(X + (Height - 1 - Y) * Width) * Colors + P];
            }
        }
    }
}

Как сделать не отражение, а переворот на 180, чтобы сохранить позиционирование в кадре? (соотношение сторон 4:3)

PS: кадр изначально в YUY2 формате (LPVIDEOHDR VHDR->lpData), в RGB перегоняется после получения - может проще сделать переворот на 180 сразу с YUY2 (если да, то как)?

Answer 1

Точно так же, только еще оборачиваете X. Оборот по X и по Y в сумме дают поворот на 180.

Output[(X + Y * Width) * Colors + P] =
  Source[((Width - 1 - X) + (Height - 1 - Y) * Width) * Colors + P];
READ ALSO
Как закрыть одно всплывающее окно, а затем открыть другое на js [требует правки]

Как закрыть одно всплывающее окно, а затем открыть другое на js [требует правки]

Наведите пожалуйста на материалы или подскажите какие изучить функцииНужно после клика по кнопке одно всплывающее окно закрыть и открыть...

247
LocalStorage начальный значения

LocalStorage начальный значения

Использую local storage для сохранения игры, cобираюсь сохранить массив, но ему нужны начальные значения неравные нулю, как осуществить?

232
Стилизация input

Стилизация input

Со стилизацией форм вечные проблемыСейчас столкнулся с необходимостью по-особенному выводить дату

270