Деформация OpenCVПерспектива с другим типом данных - PullRequest
1 голос
/ 15 апреля 2019

У меня есть изображение и карта глубины, которая принадлежит этому изображению, мне нужно иметь глубину каждого пикселя (я использую kinect).Я хотел бы создать панораму с этим изображением и его глубиной, поэтому я использовал несколько методов opencv.В частности, эта строка вызывает проблему в данный момент:

result = cv2.warpPerspective(imageA, H, (imageA.shape[1] + imageB.shape[1], imageA.shape[0]))

Проблема здесь в том, что карта глубины не использует 8-битное представление для указания глубины пикселя.Это 32-битное целое число.И проблема, с которой я столкнулся здесь, в том, что этот cv2.warpPerspective() метод не хочет использовать этот тип данных.Это ошибка, которая выдается:

TypeError: тип данных src = 8 не поддерживается

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

1 Ответ

0 голосов
/ 15 апреля 2019

Это не warpPerspective, который не хочет использовать этот тип данных.В целом это OpenCV, так как массивы 32-разрядных целых чисел без знака не поддерживаются.

Вы можете иметь:

  • 8-разрядных целых чисел, со знаком и без знака
  • 16-разрядных целых чисел, со знаком и без знака
  • 32-разрядные целые числа, только со знаком
  • 32-разрядные числа с плавающей запятой
  • 64-разрядные числа с плавающей запятой

Массивы библиотеки numpy (которые используются Python API) несколько более гибки в своих возможностях.К сожалению, это может иногда приводить к довольно неясным ошибкам, когда они передаются в функции OpenCV.


К сожалению, использование 32-битных целых чисел со знаком также не подлежит обсуждению, поскольку cv::remap (который используется для выполнения фактического преобразования), кажется, не поддерживает их.Однако он поддерживает все остальные 6 доступных типов.В зависимости от фактического диапазона значений карты глубины подойдут либо 16-битные целые числа, либо один из параметров с плавающей запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...