python uint8什么意思,python uint8转int

  python uint8什么意思,python uint8转int

  引言。

  我写这篇博客主要是为了嘲笑别人的自贬。

  为什么?

  在我考虑找出uint8/uint16/float32数据类型之间的区别之前,我已经花了两天时间进行代码调试。这不是一个很长的故事,只是几百行代码。我看了两天,就是看不出有什么问题。

  毕竟当我能够写下这个题目的时候,我已经知道问题出在哪里了。

  调试最怕的就是程序不报错,不过是你知道的数据错了,最怕不知道问题出在哪里。

  嘿。

  算了,我们直接进入问题。

  稍微有点问题和解决方法常识的人都知道,OpenCV显示图像(矩阵)时,要求矩阵必须是整数int。所以通常的想法是,在显示深度图像的时候,我们不知道我们读取的深度图像是什么数据类型,就通过数据类型转换把它转换成整数类型。

  到这个时候,思路还是正确的。但是我忽略了一点。毕竟还有8位和16位的整数。我没有密切关注他们的不同之处(或者真的忘了这个东西)。我在转换数据的时候,不走运用了uint8。声明如下:

  depth _ data=NP . asanyarray(aligned _ depth _ frame . get _ data(),dtype= uint8 )然后问题来了。

  uint8保存的数据是0-255。(有点常识的都知道吧?是的,我忘了)

  uint16保存的数据是0-65535。

  当我用上述语句转换矩阵时,矩阵中大于255的数据,都被转换到0-255内。

  整个矩阵都变了!

  一旦发现问题,程序就能正常通过。

  但最让我感到愧疚的一件事是,就在上周,我刚刚翻阅深度数据代码的时候,在原作者的程序里看到了这两句话。

  #将图像像素转换为数组depth _ data=NP . asanyarray(aligned _ depth _ frame . get _ data()、dtype= float 16 )depth _ image=NP . asanyarray(aligned _ depth _ frame . get _ data())。我当时看了一下,哎哟!不觉得占用内存吗?

  所以我昨天整合程序的时候聪明的删除了初读。

  所以,有了这两天。

  突然想到一句话,不怕傻,就怕傻不自知。

  我错了。我为我的愚蠢向原作者道歉。

  这么说吧,我很庆幸我收集数据的时候没有删掉那句话。至少我现在保存的实验数据是正确的。

  引以为戒。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: