【问题标题】:OpenCV + Python + GigE Vision CameraOpenCV + Python + GigE 视觉相机
【发布时间】:2015-02-20 10:12:42
【问题描述】:

我想问是否有人知道是否可以使用 OpenCV+Python 和 GigE Vision Camera 实现 VideoCapture,我尝试使用 cv2.VideoCapture(0) 但我总是获取集成网络摄像头的视频。我正在尝试新的 OpenCV 测试版并使用 Windows

import numpy as np
import cv2

capture = cv2.VideoCapture(0)

while (True):
 frame = capture.read()
 cv2.imshow('camera',frame)
 if cv2.waitKey(1) & 0xFF == odd('q'):
  break

capture.release()
cv2.destroyAllWindows()

提前致谢。

【问题讨论】:

  • try:print cv2.getBuildInformation() 我很确定,预构建二进制文件不支持 pvapi 等。你将需要相应的。 SDK,并从 src 重建
  • 好的,我得到了那个信息,正如你所说的 PvAPI:NO 和 GigEVisionSDK:NO,所以你能详细解释一下我如何从 src 重建吗????我的意思是,我已经安装了相机的 SDK,但我不知道如何进行重建。谢谢
  • 您将需要 cmake(-gui)、opencv src(以及一些依赖项,如 numpy)并重建 whole thing from scratch
  • 你的意思是创建我自己的库???
  • 是的。在本地构建自己的 opencv 库。

标签: python opencv


【解决方案1】:

可能有一种方法可以做到这一点,一家名为 Stemmer Imaging 的德国公司为 GenICam 标准开发了一个 Python 库。这应该够了吧。目前我正在为自己进行研究以完成相同的任务,这就是我发现的:

Link 1 还有这个 Link 2.

就我个人而言,到目前为止我还无法让它发挥作用,但这应该只是时间问题。

【讨论】:

    【解决方案2】:

    使用收割机来完成这项任务可能会更容易。它将为您提供所有需要的灵活性,并且针对 GIGE 相机进行了优化。 https://github.com/genicam/harvesters

    我已经用了一段时间了,看起来够简单,够快。

    【讨论】:

    【解决方案3】:

    在函数 cv2.VideoCapture(int) 中传递另一个整数值而不是 0 会选择另一个连接的摄像机。示例 cv2.VideoCapture(1)

    import numpy as np
    import cv2
    
    capture = cv2.VideoCapture(1)
    
    while (True):
     frame = capture.read()
     cv2.imshow('camera',frame)
     if cv2.waitKey(1) & 0xFF == odd('q'):
      break
    
    capture.release()
    cv2.destroyAllWindows()
    

    【讨论】:

    • OpenCV: out device of bound (0-0): 1 。 .... 它认为只有一台摄像机。我怀疑没有在以太网端口上搜索千兆摄像头?相机 0 是笔记本电脑的相机。
    猜你喜欢
    • 2016-10-22
    • 2020-03-27
    • 2011-03-21
    • 2012-03-16
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多