Преобразование MTLTexture 16-битного типа с плавающей запятой в cv::Mat 32-битного типа с плавающей запятой

Я столкнулся с проблемой преобразования MTLTexture с плавающей запятой обратно в cv::Mat с плавающей запятой.

Обычно это не было бы проблемой, но стандартная 32-битная текстура с плавающей запятой недоступна для записи в Metal. Мне приходится работать с читаемыми/записываемыми 16-битными/канальными плавающими текстурами; как только я получаю 16-битные данные текстуры, я не могу получить доступ к каждому каналу по отдельности, поскольку собственное число с плавающей запятой имеет длину 32 бита, а арифметика указателя с 16-битными данными будет ошибочной.

Я рассматривал возможность предопределения собственных 16-битных чисел с плавающей запятой, но хотел проверить, есть ли другие более простые методы для достижения этой цели.


person CaladanBrood    schedule 24.04.2015    source источник
comment
Half-float не поддерживаются в OpenCV, поскольку они изначально не поддерживаются в большинстве архитектур ЦП без графического процессора.   -  person Adi Shavit    schedule 28.04.2015


Ответы (1)


iOS поддерживает тип float16, пробовали ли вы извлекать половинные значения и приводить к float32?

У меня была та же проблема с записью плавающих текстур, поэтому я просто использовал буфер, что вполне нормально, если вам не нужна выборка.

В последнее время Apple, возможно, что-то изменила, так как я могу писать плавающие текстуры. Убедитесь, что у вас установлена ​​последняя версия.

person aledalgrande    schedule 24.05.2015
comment
Сделаю. Большое спасибо за ответ. Постараюсь вернуться с обновлением. - person CaladanBrood; 25.05.2015