Создайте матрицу openCV из повернутого CVPixelBufferRefIOS

Программируем под IOS
Ответить
Anonymous
 Создайте матрицу openCV из повернутого CVPixelBufferRef

Сообщение Anonymous »

У меня есть прямая трансляция видео, подключенная к MLModel. Чтобы получить правильные нормализованные координаты на основе обнаружений MLModel, я установил для параметра videoOrientation AVCaptureConnection значение «Портрет».
Это прекрасно работает, и мои обнаружения правильно отображаются на экране.
Это отлично работает, и мои обнаружения правильно отображаются на экране.
Это прекрасно работает, и мои обнаружения правильно отображаются на экране.
p>
Но у меня есть второй этап, на котором я должен превратить CVPixelBufferRef в матрицу openCV.
Проблема в том, что мой код, который обычно обрабатывает это, производит мусор чередующиеся пиксели. После некоторого расследования я обнаружил, что если я не изменил выходную видеоориентацию (и, таким образом, она останется «Пейзаж справа»), то преобразование буфера пикселей в матрицу openCV работает как положено.
Как я могу изменить стандартный метод преобразования (ниже), чтобы правильно считать CVPixelBufferRef в матрицу openCV?

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

CVPixelBufferLockBaseAddress(pixelBuffer, 0);
void *baseaddress = CVPixelBufferGetBaseAddress(pixelBuffer);

mat = cv::Mat(videoRect.size.height, videoRect.size.width, CV_8UC4, baseaddress, 0);

CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
Я попробовал поменять местами ширину и высоту и попробовал только два видеоформата, которые, кажется, работают с MLModel (kCVPixelFormatType_32BGRA и kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)
Любой Помощь будет принята с благодарностью! Прикреплено изображение созданного в данный момент cv::Mat (маленькое поврежденное изображение в левом верхнем углу). Если я не установлю выходную ориентацию, полученное изображение будет правильным (хотя и повернутым).
[img]https://i.sstatic. net/jybdNBfF.jpg[/img]


Подробнее здесь: https://stackoverflow.com/questions/785 ... lbufferref
Ответить

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

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

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

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

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