OpenCV透视图与另一个数据类型

2024-09-28 23:16:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个图片和一个深度图,属于该图片,我需要有每个像素的深度(我使用的是kinect)。我想用这张图片和它的深度创建一个全景视图,所以我使用了一些opencv方法。尤其是这一行,目前正引起一个问题:

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

这里的问题是,depthmap不使用8位表示来表示像素的深度。它是一个32位整数。我在这里遇到的问题是,这个cv2.warpPerspective()方法不想采用这个数据类型。这是引发的错误:

TypeError: src data type = 8 is not supported

我可以把它转换成8位,但是这样会损失太多的信息,我不能在深度上损失那么多的准确度。我知道当我把它转换成8位的时候,它是有效的。所以我想我需要一个解决办法,但我不知道怎么做。你知道吗


Tags: 方法视图图片像素resultcv2opencv损失
1条回答
网友
1楼 · 发布于 2024-09-28 23:16:34

不是^{}不想采用这种数据类型。它通常是OpenCV,因为不支持32位无符号整数的数组。你知道吗

您可以拥有:

  • 8位整数,有符号和无符号
  • 16位整数,有符号和无符号
  • 32位整数,仅带符号
  • 32位浮点
  • 64位浮点

numpy库的数组(由pythonapi使用)在功能上更灵活一些。不幸的是,当它们被传递到OpenCV函数时,这有时会导致相当模糊的错误。你知道吗


不幸的是,使用32位有符号整数也是不可能的,因为^{}(用于执行实际转换)似乎不支持它们。但是,它支持所有其他6种可用类型。根据depthmap值的实际范围,可以使用16位整数或一个浮点选项。你知道吗

相关问题 更多 >