【问题标题】:How i can convert a 16 bit depth image (png format) into a 32 bit one?如何将 16 位深度图像(png 格式)转换为 32 位图像?
【发布时间】:2015-05-05 15:47:15
【问题描述】:

在阈值处理后,我有一张人手的深度图像 16 uint。我想恢复一些几何特征,如轮廓、凸包等,但所有这些功能都适用于 8 位或 32 位图像,所以我需要转换。我在 python 中工作!

我已经尝试了一些开放的 cv 函数作为

img32 = np.array(thresh, dtype=np.float32) # This line only change the type, not values
img32 *= 65536 # Now we get the good values in 32 bit format
print img.dtype

但我总是使用 16 uint 图像。

【问题讨论】:

  • 相关,大概回答了你的问题:stackoverflow.com/q/24444334
  • 图片格式是什么?它是压缩的还是原始的?
  • @RobertHarvey 嗨!我只是或多或少地以相同的方式尝试过,我想:) 但什么都没有......@Spirine 嗨,是的,它是压缩的,它是来自 kinect 的图像,保存为 png,我用来为我的做一些测试硕士学位论文。这是一个 16uint 深度的图像,我已经用 otsu 的阈值进行二值化,现在我有一个黑白图像,我想在其中找到 opencv 中的一些几何特征,但我需要的许多功能需要 8 位或 32 位图像

标签: python opencv tracking depth


【解决方案1】:

我不相信 PNG 支持浮点数据,所以我不确定您希望输出的格式是什么?

如果原始 32 位浮点 RGB 没问题,您可以使用 ImageMagick,它安装在大多数 Linux 发行版上,并且适用于 OS X 和 Windows。该命令将是

convert input.png -depth 32 -define quantum:format=floating-point rgb:out.rgb

例如,如果您创建一个像这样的 1x1 白色图像

convert -size 1x1 xc:white -depth 32 -define quantum:format=floating-point rgb:out.rgb

你会得到一个像这样的 12 字节图像

xxd out.rgb
0000000: 0000 803f 0000 803f 0000 803f

如果你像这样创建一个 1x1 黑色图像

convert -size 1x1 xc:black -depth 32 -define quantum:format=floating-point rgb:out.rgb

你会得到一个像这样的 12 字节图像

xxd out.rgb
0000000: 0000 0000 0000 0000 0000 0000

【讨论】:

  • 对不起!我写的 float32 是错误的,我想要一个 32 uint 输出! 8 uint 也许也不错,但我不想丢失太多信息
猜你喜欢
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
相关资源
最近更新 更多