【发布时间】:2013-10-26 06:42:45
【问题描述】:
我正在使用 Micro-Manager 1.4 为显微镜使用相机。使用 Python 界面,我已经设法访问相机、更改曝光时间等,并且可以捕获单个图像。
但是,每个图像都作为 NumPy 数组返回,其中每个像素都表示为单个整数,例如“7765869”。据我在网上找到,这在 Java 中被称为“BufferedImage”,这意味着 RGB 值被编码为:
BufferedImage = R * 2^16 + G * 2^8 + B
我的问题是:我怎样才能使用例如Numpy 或 OpenCV,将这种数组转换为更方便的数组,其中每个像素都是 uint8 值的 RGB 三元组?不用说,转换应该尽可能高效。
【问题讨论】:
-
为了扩展这背后的理论,你所拥有的是一个
a * x + b * y + c * z == n形式的线性丢番图方程,在我们的例子中是a = 2**16, b = 2**8, c = 1。通常,这些方程的解涉及找到gcd(a, b, c)并希望它除以n;如果没有,那么就没有解决方案。假设存在一个解决方案,则存在无限多个解决方案。但是,在这种情况下,我们受限于找到解决方案0 <= x, y, z < 256,因此鉴于gcd(a, b, c) | n,将只有一个解决方案。
标签: python opencv numpy camera