【发布时间】:2017-03-26 13:53:37
【问题描述】:
我需要一个 uEye 相机,在 Windows 上使用 python 来拍照和操作直播。
由于 uEye 相机是广泛使用的工业相机,我认为有一个标准的解决方案;但是,我找不到任何东西。
解决方案需要在 Windows XP 或 Windows 7 上的 python 2.7 下运行。
如果有人在 Windows 上的 python 中成功使用了 uEye 相机,我将不胜感激分享他在这个问题上的知识,或者至少为我指明正确的方向。我也觉得确实有必要找到一个通用的解决方案,因为我肯定不是唯一一个有这个要求的人。
到目前为止我已经尝试过什么
(a) pyueye
有一个python driver available 可以在 Linux 下工作,并且 - 根据文档 - “应该在 Windows 上工作”。
我试过了,但安装失败:python setup.py install
给我
ueye\ueye.pyx: cannot find cimported module 'stdlib'
ueye\ueye.pyx: cannot find cimported module 'python_cobject'
Compiling ueye\ueye.pyx because it changed.
Compiling ueye\ueyeh.pyx because it changed.
[1/2] Cythonizing ueye\ueye.pyx
我不知道cimported 模块是什么以及这是否应该工作。所以最好知道是否有人在 Windows 系统上成功安装了这个驱动程序。
(b) 开放式CV
OpenCV 似乎是图像捕获和处理的某种标准。似乎有些人用它来访问 uEye 相机,而似乎也有一些共识认为 uEye 相机不适用于 openCV。我没有找到任何据报道有效的示例代码。
无论如何我都试过了(使用 openCV 2.4.13 版),我可以访问相机并从中检索图片。最初的分辨率是480 x 640,但我可以将其更改为768 x 1024 的传感器分辨率。
但是,我无法正确设置曝光时间和增益,如我使用的以下代码所示。
cam = cv2.VideoCapture(0)
width = cam.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)
height = cam.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)
exposure = cam.get(cv2.cv.CV_CAP_PROP_EXPOSURE)
print width, height, exposure # prints 640 480 -4.0
hr = cam.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 768)
wr = cam.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 1024)
print "Setting resolution ", hr, wr # prints True True
cam.set(cv2.cv.CV_CAP_PROP_EXPOSURE, 0) # or any other value, same for gain
width = cam.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)
height = cam.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)
exposure = cam.get(cv2.cv.CV_CAP_PROP_EXPOSURE)
print width, height, exposure # 1024.0 768.0 -4.0
ret, buff = cam.read()
cam.release()
很可能相机处于某种自动模式,它会自动调整曝光时间和增益等参数。但如果是这种情况,我将如何关闭这个自动模式。
(c) 简单CV
simpleCV 似乎是 openCV 的替代品。我也试过了,它给出了只获取480 x 640 像素图像的问题,我找不到任何方法来设置它,也找不到设置曝光时间的方法。
from SimpleCV import Camera
cam = Camera(0)
img = cam.getImage() # img is a 480 x 640 pixel image
(d) 用 C 编写自己的驱动程序
一种选择可能是编写 C 代码以通过其 SDK 访问相机。完整的documentation of the SDK 可用 看来,有人成功地做到了(here,或here) 但我什至不知道从哪里开始以及如何将实时图像导入 python。
【问题讨论】:
标签: python opencv camera driver simplecv