gpt4 book ai didi

python - 使用 PyCapture2 读取 MONO 16 位图像

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:15 25 4
gpt4 key购买 nike

我正在使用 PointGrey 的 CMLN-13S2M-CS 相机。此相机具有 MONO 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,)240。形状正好是 2 x (964 x 1296)。我应该如何 reshape 这个?此外,饱和时的最大值为 255。这很奇怪,因为这对应于 MONO 8 像素格式。我做错了什么?

最佳答案

这是一个快速演示,展示了如何将 uint8 的一维数组转换为 uint16 的二维数组。我们这里需要的关键函数是view .

import numpy as np

# Make 24 bytes of fake data
raw = np.arange(24, dtype=np.uint8)

#Convert
out = raw.view(np.uint16).reshape(3, 4)
print(out)
print(out.dtype)

输出

[[ 256  770 1284 1798]
[2312 2826 3340 3854]
[4368 4882 5396 5910]]
uint16

感谢 Andras Deak 的协助!

如果生成的图像看起来不正确,您可能需要交换 16 位整数的字节顺序。您可以在 Numpy 中阅读有关字节顺序的信息 here .

如果那个看起来仍然不正确,那么数据可以组织为两个平面,一个平面用于像素的低位,另一个平面用于高位订单位。这也很容易处理,但希望它不会走到那个地步。 ;)

关于python - 使用 PyCapture2 读取 MONO 16 位图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50117751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com