Область интереса матрицы YV12

Этот вопрос является кросс-постом из http://answers.opencv.org/question/22242/region-of-interest-of-yv12-matrix/ (пока не получил ответа).

У меня есть следующая матрица OpenCV в цветовом пространстве YV12 (хранится как 1-канальное изображение). Он заполнен данными, полученными из предварительного просмотра камеры Android.

mYuv  = new Mat(480 + (480/2), 640, CvType.CV_8UC1);

Можно ли извлечь часть этого изображения (первый шаг) и впоследствии преобразовать его в цветовое пространство RGB (второй шаг)? Я хотел бы сначала извлечь регион, чтобы сохранить хорошую производительность при конвертации. Скажем так, я хочу извлечь следующий прямоугольник:

x: 150
y: 50
width: 60
height: 60

Заранее спасибо.


person Andrey Chernih    schedule 11.10.2013    source источник


Ответы (1)


Используйте субмат

roi = mYuv.submat(new Rect(x,y,width,height));

А затем Imgproc.cvtColor с правильным кодом. У меня нет возможности проверить это прямо сейчас, но я бы попробовал:

Imgproc.cvtColor(roi, destination, Imgproc.COLOR_YUV2RGB_YV12);

Надеюсь, это поможет!

person Rafal    schedule 11.10.2013
comment
Извините, я забыл упомянуть, но я уже пытался передать свой ROI конструктору копирования Mat и получил исключение утверждения OpenCV. Этот метод, очевидно, не будет работать, потому что YUV хранится в 1-канальном изображении, поэтому должна быть какая-то предварительная обработка. - person Andrey Chernih; 12.10.2013