Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用用于flycapture的python绑定检索彩色图像_Python_Opencv_Flycapture - Fatal编程技术网

使用用于flycapture的python绑定检索彩色图像

使用用于flycapture的python绑定检索彩色图像,python,opencv,flycapture,Python,Opencv,Flycapture,我正在使用PointGrey系统的CMLN-13S2C-CS CCD摄像机。它使用FlyCapture API抓取图像。我想抓取这些图像,并使用python在OpenCV中使用它们做一些事情 我知道以下python绑定:。通过这个绑定,我可以检索图像。但是,我无法检索彩色图像,这是相机应该能够做到的 摄像机能够处理的视频模式和帧速率分别为videomode_1280x960Y8和framerate_15。我认为这与像素格式有关,我认为应该是raw8 是否有人能够使用此绑定或任何现有的用于flyc

我正在使用PointGrey系统的
CMLN-13S2C-CS CCD
摄像机。它使用FlyCapture API抓取图像。我想抓取这些图像,并使用python在OpenCV中使用它们做一些事情

我知道以下python绑定:。通过这个绑定,我可以检索图像。但是,我无法检索彩色图像,这是相机应该能够做到的

摄像机能够处理的视频模式和帧速率分别为
videomode_1280x960Y8
framerate_15
。我认为这与像素格式有关,我认为应该是raw8


是否有人能够使用此绑定或任何现有的用于flycapture的python绑定来检索彩色图像?请注意,我是在Linux上工作。

我使用的是与Matlab相同的摄像头,并且还遇到了“raw8”格式的问题。所以,我选择了“rgb8”,特别是“F7_RGB_644x482_Mode1”,所有的东西都开始工作了(不确定它应该如何看待Python)

另外,目前我正试图开始使用Python和pyflycapture2,让我们看看是否能够找到解决方法

UPD:好了,现在我知道了 您(和我)的问题原因隐藏在pyflycapture2本身中,尤其是“图像”类定义。您可以在这里查看:


任何图像都将转换为灰度,即使最初是RGB。因此,我们需要以某种方式更新该文件。

您不需要使用预定义的模式。
Context
类具有
set\u format7\u配置(模式、x\u偏移、y\u偏移、宽度、高度、像素\u格式)
方法,您可以使用该方法进行自定义设置。使用此选项,您至少可以更改抓取图像的分辨率。 用法示例:

c.set\u格式7\u配置(fc2.MODE\u 0、320、240、1280、720、fc2.PIXEL\u格式\u MONO8)
至于颜色问题。到目前为止,我已经使用
PIXEL\u格式\u RGB8
获得了彩色图像,并在
flycapture2.pyx
中修改了
image
类,如下所示:

def\uuuu数组(自):
cdef np.ndarray r
cdef np.npy_intp形状[3]#从2到3
cdef np.dtype dtype
numberofdimensions=2#新变量
如果self.img.format==PIXEL\u format\u MONO8:
dtype=np.dtype(“uint8”)
elif self.img.format==像素\u格式\u 16:
dtype=np.dtype(“uint16”)
elif self.img.format==PIXEL_format_RGB8:#新条件
dtype=np.dtype(“uint8”)
numberofdimensions=3
形状[2]=3
其他:
dtype=np.dtype(“uint8”)
Py_增量(数据类型)
形状[0]=self.img.rows
形状[1]=self.img.cols
#nd值(numberofdimensions)始终为2;步幅设置为空
r=PyArray_NewFromDescr(np.ndarray,dtype,
numberofdimensions,形状,空,
self.img.pData,np.NPY\u默认值,无)
r、 基本=自我
Py_增量(自)
返回r
这段代码很可能不是完美无缺的(即我删除了
stride
的东西),原因很简单,我对C和Cython几乎没有经验,但通过这种方式,我至少获得了一个彩色帧(现在正在尝试获得
PIXEL\u FORMAT\u RAW8
工作)


提醒一下:
flycapture2.pyx
是一个Cython文件,因此您需要重新编译它才能使用它(我只是再次运行pyflycap2安装脚本)。

谢谢。我可以为我的相机设置自定义设置。不幸的是,它不支持
RGB8
作为
PIXEL\u格式。我天真地尝试将
array
函数中的
RGB
更改为
RAW8
。然而,这不起作用,并且会产生奇怪的结果。通过重新安装,重新编译成功。目前,我正在尝试调整您的代码以适应
RAW8
。“你在这方面有什么进展吗?”我最终选择了另一条路线。没有遵循
RAW8
格式,而是使用了
PIXEL\u格式\u 411YUV8
,这对我来说很有用。我最后做的是用
pyflycap2
连接到相机,然后用它应用设置(像素格式和分辨率)。完成后,我断开了与相机的连接,并使用
OpenCV
打开了一个新的抓拍画面。为了让OpenCV拾取相机,我首先安装了
libusb
,然后安装了
libdc1394
,并支持
libusb
。你可以在这里@TheDude阅读更多关于它的信息,我知道这个链接谈到OSX,但是Linux(我自己在Ubuntu上运行)的过程或多或少是一样的(你使用apt-get而不是port)。我安装了以下程序:
sudo-apt-get-install-libusb-1.0-0
sudo-apt-get-install-libdc1394-22
。下一步是什么?我应该按照其余的指示去做吗?如果是,libdc1394-22位于哪里。如果没有,我的下一步行动是什么?如果你在USB2上运行,那么这就足够了。如果您想知道如何使用OpenCV获取帧,请查看此处。
if self.img.format == PIXEL_FORMAT_MONO8:
            dtype = np.dtype("uint8")
            stride[1] = 1
        elif self.img.format == PIXEL_FORMAT_MONO16:
            dtype = np.dtype("uint16")
            stride[1] = 2
        else:
            dtype = np.dtype("uint8")
            stride[1] = self.img.stride/self.img.cols