Преобразуйте RGB8888 в YUV420 с помощью ColorMatrix.setRGB2YUV()JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Преобразуйте RGB8888 в YUV420 с помощью ColorMatrix.setRGB2YUV()

Сообщение Anonymous »

Я пытаюсь найти более быстрый способ преобразования RGB в YUV с помощью Android SDK, поскольку стандартные методы «пиксель для пикселя» в Java довольно медленны. ColorMatrices кажется довольно эффективным, и я вижу, что существует метод setRGB2YUV(), но я не могу найти никаких примеров, а в документации просто написано «Установите матрицу для преобразования RGB в YUV», что, как обычно, совершенно бесполезно.
Вот часть моего кода инициализации, который немного усложняется с массивами из-за многопоточности:

Код: Выделить всё

cacheBitmaps = new Bitmap[NumberOfThreads];
cacheCanvas = new Canvas[NumberOfThreads];
mRGB2YUV = new ColorMatrix();
cmfRGB2YUV = new ColorMatrixColorFilter(mRGB2YUV);
pRGB2YUV = new Paint();
pRGB2YUV.setColorFilter(cmfRGB2YUV);
for (int m=0; m< NumberOfThreads; m++) {
cacheBitmaps[m] = Bitmap.createBitmap(widthX,heightY, Config.ARGB_8888);
cacheCanvas[m] = new Canvas(cacheBitmaps[m]);
}
Позже я использую это, чтобы нарисовать RGB на холсте указанной краской:

Код: Выделить всё

cacheCanvas[n].drawBitmap(fb.frames[n].getAndroidBitmap(),0,0, pRGB2YUV);
Я также экспериментировал с использованием стандартной матрицы, которая не должна вносить какие-либо изменения в значения RGB, например:

Код: Выделить всё

float[] matrix = {
0, 1, 0, 0, 0, //red
0, 0, 1, 0, 0, //green
0, 0, 0, 1, 0, //blue
0, 0, 0, 0, 1 //alpha
};
mRGB2YUV.set(matrix);
Что бы я ни делал, я либо получаю черные, зеленые или искаженные кадры в своем выходном видео (используя JavaCV с FFMPEG и указывая AV_PIX_FMT_NV21 в качестве цветового формата после копирования окончательного растрового изображения в IplImage).

Кто-нибудь знает, как это использовать и возможно ли это вообще или делает то, что говорит?

Подробнее здесь: https://stackoverflow.com/questions/227 ... setrgb2yuv
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Преобразуйте RGB8888 в YUV420 с помощью ColorMatrix.setRGB2YUV()
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Преобразуйте RGB8888 в YUV420 с помощью ColorMatrix.setRGB2YUV()
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Преобразуйте RGB8888 в YUV420 с помощью ColorMatrix.setRGB2YUV()
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Можно ли изменить оттенок, насыщенность, яркость и прозрачность растрового изображения с помощью одной ColorMatrix?
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Изображение YUV420 в BGR из указателей пикселей
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»