【问题标题】:How to open a M1054 Axis camera with opencv - Python如何使用 opencv 打开 M1054 轴相机 - Python
【发布时间】:2018-02-13 17:18:44
【问题描述】:

我一直在尝试在 Python 下使用 OpenCv 在本地(通过以太网电缆连接)打开一个 Axis Camera M1054。我在 Windows 7 - 64 下工作。我一直在将此代码与 Axis 相机一起用作连接的唯一相机:

import sys
import cv2
import numpy as np


capture = cv2.VideoCapture(0)

if not capture.isOpened():
    print "Error opening capture device"
    capture.release()
    cv2.destroyAllWindows()

if capture.isOpened():
    print "Device captured correctly",capture

while 1:

 ret, frame = capture.read()
 print "frame1 =",frame

 if ret == False :
  print "frame is None"
  break

 cv2.imshow('Camera 1',frame)

 if cv2.waitKey(100) == 0x1b:
  print 'ESC pressed. Exiting ...'
  break

capture.release()
cv2.destroyAllWindows()

我得到的只是一个黑屏,所有的矩阵都显示出来了

print "frame1 =",frame

都是0。

我也尝试过使用

调用相机
cv2.VideoCapture(http://169.254.167.2/axis-cgi/mjpg/video.cgi?resolution=352x240?.mjpg)

但我仍然得到相同的结果。

同样重要的是要注意,即使它只显示黑色图像和空矩阵,当我运行代码时,计算机也会要求我提供相机凭据。

我一直在寻找解决方案,但似乎没有任何效果(我之前也尝试使用 Windows Media Encoder 获取实时视频,然后使用

调用它
cv2.VideoCapture(0)

但是没有得到更好的结果。 有人遇到过这个问题吗?

【问题讨论】:

    标签: python opencv ip-camera


    【解决方案1】:

    阅读AXIS文档 here.

    我发现你可以使用RTPS

    cv2.VideoCapture('rtsp://username:password@169.254.167.2/axis-media/media.amp')

    或使用 HTTP

    cv2.VideoCapture('http://username_password@169.254.167.2/axis-media/media.amp')

    在您的代码中尝试此解决方案之前,我建议您(正如 Adrien 提到的) 确保链接在 VLC 中有效。您可以通过以下方式执行此操作:

    1. 打开 VLC
    2. 在 VLC 中单击鼠标右键
    3. 开放媒体 > 开放网络
    4. 粘贴上面提到的链接。
    5. 按播放键。
    6. (如果需要) - 输入相机的凭据。
    7. 按播放键。

    您的视频流现在应该在 VLC 中显示。

    【讨论】:

    • 此链接帮助我生成了正确的链接以访问您的相机型号:ispyconnect.com/man.aspx?n=Axis#。例如,对于我的相机型号 Axis P1357 使用上述网站生成的链接:“rtsp://@/axis-media/media.amp”。此链接适用于 cv::VideoCapture source("rtsp://@/axis-media/media.amp");
    【解决方案2】:

    cv2.VideoCapture(0) 不适用于网络摄像头,它仅适用于网络摄像头。

    对于 URL 版本,你能用 vlc 检查 URL 是否正确吗? 不同的相机型号可能会有所不同,根据this non official website应该是http://169.254.167.2/mjpg/video.mjpg

    请注意,如果相机受密码保护,您必须在 url 中包含用户名/密码:http://user:pass@169.254.167.2/mjpg/video.mjpg(通常,默认用户/密码为 root/root)。这当然不安全,因为相机密码是在网络上未加密发送的,但在您的情况下这可能不是问题。

    【讨论】:

    • 您好 Adrien,感谢您的回答,我一直在 VLC 中尝试我的 URL,但在尝试您的 URL 之前出现错误:169.254.167.2/mjpg/video.mjpg 在 VLC 上打开。然而,当我更改我的 Python 代码以使用 OpenCV 打开它时(即使用 cv2.VideoCapture('URL') 打开它,它也不起作用,你知道任何其他更适合调用 http URL 流的方法吗? ?
    猜你喜欢
    • 1970-01-01
    • 2019-06-16
    • 2019-12-28
    • 2013-06-14
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多