Java — формат изображения танго YCRCB_420_SP

Я давно не разрабатывал для Tango, но недавно я обновился до последней версии Tango Java API и заметил, что TangoImageBuffer объекты теперь имеют format == 17, который:

public static final int YCRCB_420_SP = 17;

Насколько я помню, в предыдущих версиях раньше было YV12 скорее, чем YCRCB_420_SP,

public static final int YV12 = 842094169;

Я использовал, чтобы применить OpenCV cvtColor Функция для преобразования его в BGR:

cv::Mat imageBgr(720, 1080, CV_8UC3);
cv::Mat image(3 * 720 / 2, 1280, CV_8UC1);
cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV12);

Есть ли способ прочитать YCRCB_420_SP используя OpenCV? Я старался COLOR_YCrCb2BGR и подобные режимы, но они не работают.

По-видимому, COLOR_YUV2RGB_NV12 все еще работает и дает несколько разумный результат:

YCRCB_420_SP читается как NV12

Но кажется, что цвета выключены, и все выглядит очень желтовато. Или я параноик?

У меня вопрос, как правильно читать YCRCB_420_SP изображений? Правильно ли применять OpenCV cv::COLOR_YUV2RGB_NV12?

РЕДАКТИРОВАТЬ:

Я попытался использовать NV21, как подсказал @fireant, но этот явно не работает:

NV21

NV12 была намного ближе к оригинальным цветам. Код является:

cv::cvtColor(image, imageBgr, cv::COLOR_YUV2RGB_NV21);

2

Решение

Формат изображения должен быть YUV NV21 не NV12. OpenCV может конвертировать изображение из этот формат в BGR или RGB.

Похоже, вы используете RGB вместо BGR, изображение после NV21 с BGR выглядит так:
введите описание изображения здесь

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]