我有一张图片和属于该图片的深度图,我需要每个像素的深度(我使用的是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位时,我知道它可以工作。因此,我猜想我需要一种解决方法,但不确定如何。
答案 0 :(得分:0)
不是warpPerspective
不想采用此数据类型。通常是OpenCV,因为不支持无符号32位整数数组。
您可以拥有:
numpy
库的数组(由Python API使用)在执行功能方面更加灵活。不幸的是,当它们传递给OpenCV函数时,有时可能会导致相当模糊的错误。
不幸的是,使用32位带符号整数也是没有问题的,因为cv::remap
(用于执行实际的转换)似乎不支持它们。但是,它确实支持所有其他6种可用类型。根据深度图值的实际范围,可以使用16位整数或浮点选项之一。