Это прекрасно работает, и мои обнаружения правильно отображаются на экране.
Это отлично работает, и мои обнаружения правильно отображаются на экране.
Это прекрасно работает, и мои обнаружения правильно отображаются на экране.
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);
Любой Помощь будет принята с благодарностью! Прикреплено изображение созданного в данный момент cv::Mat (маленькое поврежденное изображение в левом верхнем углу). Если я не установлю выходную ориентацию, полученное изображение будет правильным (хотя и повернутым).
[img]https://i.sstatic. net/jybdNBfF.jpg[/img]
Подробнее здесь: https://stackoverflow.com/questions/785 ... lbufferref
Мобильная версия