我正在使用PointGrey的CMLN-13S2M-CS
相机。这台相机有一个16位的单声道像素格式。使用来自PointGrey的PyCapture2
包装器我无法检索相机正在录制的图像。在
我有以下代码:
import sys
import numpy
import PyCapture2
## Connect camera
bus = PyCapture2.BusManager()
c = PyCapture2.Camera()
c.connect(bus.getCameraFromIndex(0))
## Configure camera format7 settings
fmt7imgSet = PyCapture2.Format7ImageSettings(0, 0, 0, 1296, 964, PyCapture2.PIXEL_FORMAT.MONO16)
fmt7pktInf, isValid = c.validateFormat7Settings(fmt7imgSet)
c.setFormat7ConfigurationPacket(fmt7pktInf.recommendedBytesPerPacket, fmt7imgSet)
## Start capture and retrieve buffer
c.startCapture()
im = c.retrieveBuffer()
print im.getData().shape
print numpy.max(im.getData())
以下由print
语句返回:(2498688,)
和{2 x (964 x 1296)
。我该如何重塑这个形象?{cd7>最大值也是饱和的。这是奇怪的,因为这对应于单8像素格式。我做错什么了?在
下面是一个快速演示,演示如何将} 。在
uint8
的1D数组转换为uint16
的2D数组。这里我们需要的关键函数是^{输出
^{pr2}$感谢安德拉斯·迪克的帮助!在
如果生成的图像看起来不正确,则可能需要交换16位整数的字节顺序。您可以阅读Numpyhere中的字节排序。在
如果这个看起来仍然不正确,那么数据可以组织为两个平面,一个平面用于像素的低阶位,另一个平面用于高阶位。这也很容易处理,但希望不会变成那样。;)
相关问题 更多 >
编程相关推荐