Отобразите YUV в OpenGl

Можно, вероятно, хотеть попытаться использовать его для себя, чтобы быть лучше способными видеть это, не может быть ясно из документов, как Spring поощряет интерфейсное использование.

Вот несколько примеров:

  1. Говорят, что Вы пишете класс, который должен читать из ресурса (например, файл), на который можно сослаться несколькими способами (например, путем к классу, абсолютным путем к файлу, как URL и т.д.). Вы хотели бы определить org.springframework.core.io.Resource (интерфейсное) свойство на Вашем классе. Тогда в Вашем конфигурационном файле Spring, Вы просто выбираете класс фактической реализации (например, org.springframework.core.io.ClassPathResource, org.springframework.core.io.FileSystemResource, org.springframework.core.io.UrlResource и т.д.). Spring в основном функционирует как чрезвычайно универсальную фабрику.

  2. , Если Вы хотите использовать в своих интересах интеграцию AOP Spring (для добавления перехватчиков транзакции, например), необходимо будет в значительной степени определить интерфейсы. Вы определяете точки перехвата в своем конфигурационном файле Spring, и Spring генерирует прокси для Вас, на основе Вашего интерфейса.

Это примеры, с которыми у меня лично есть опыт. Я уверен, что существует намного больше там.

11
задан 13 revs, 4 users 99% 28 March 2019 в 08:29
поделиться

3 ответа

Следующая попытка :) Думаю у тебя уф буфер не чередуется. Похоже, что сначала идут значения U, а затем массив значений V. Изменение строк на

unsigned int voffset = YUV_HEIGHT * YUV_WIDTH / 2;
float U = lookupTableU [uvBuffer [ y * (YUV_WIDTH / 2) + x/2] ]; 
float V = lookupTableV [uvBuffer [ voffset + y * (YUV_WIDTH / 2) + x/2] ];

может указать, так ли это на самом деле.

8
ответ дан 3 December 2019 в 09:42
поделиться

Изображение выглядит так, как будто у вас формат 4: 1: 1. Вам следует изменить свои строки на

float U = lookupTableU [uvBuffer [ (y * (YUV_WIDTH / 4) + (x/4)) * 2 ] ]
float V = lookupTableU [uvBuffer [ (y * (YUV_WIDTH / 4) + (x/4)) * 2 + 1] ]

Может быть, вы можете опубликовать результат, чтобы увидеть, что еще не так. Мне всегда трудно об этом думать. Намного проще подойти к этому итеративно.

0
ответ дан 3 December 2019 в 09:42
поделиться

Я думаю, вы неправильно указываете значения U и V. Вместо:

float U = lookupTableU [uvBuffer [ ((y / 2) * (x / 2) + (x/2)) * 2  ] ]; 
float V = lookupTableV [uvBuffer [  ((y / 2) * (x / 2) + (x/2)) * 2 + 1] ];

Это должно быть что-то вроде

float U = lookupTableU [uvBuffer [ ((y / 2) * (YUV_WIDTH / 2) + (x/2)) * 2  ] ]; 
float V = lookupTableV [uvBuffer [  ((y / 2) * (YUV_WIDTH / 2) + (x/2)) * 2 + 1] ];
3
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: