【发布时间】:2014-03-10 10:00:54
【问题描述】:
我正在尝试从 IP 摄像机访问视频。我正在使用 OpenCV 和 Python 来做到这一点。我尝试过的代码如下:
import numpy as np
import cv2
from cv2 import cv
camera=cv.CaptureFromFile("http://root:root@192.168.0.90/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg")
if camera is None:
print 'Camera is null'
else:
print 'Camera is not null'
cv.NamedWindow("win")
while True:
image=cv.QueryFrame(camera)
cv.ShowImage("win", image)
k=int(cv.WaitKey(10))
if k is 27:
break
在运行此代码时,我得到的输出是:
Image not converted
在使用另一种方法时,CaptureFromCAM 而不是CaptureFromFile,代码是:
import numpy as np
import cv2
from cv2 import cv
camera=cv.CaptureFromCAM(0)
if camera is None:
print 'Camera is null'
else:
print 'Camera is not null'
cv.NamedWindow("win")
while True:
image=cv.QueryFrame(camera)
if image is None:
print 'No conversion to IPL Image'
break
else:
cv.ShowImage("win", image)
当我运行这段代码时,我得到的错误是:
ERROR: SampleCB() - buffer sizes do not match
No conversion to IPL Image
我读过它,SampleCB() 错误是在缓冲区大小与预期输入大小不匹配的情况下。我试图更改流分辨率,但似乎没有任何效果。我关注了this 线程和this 线程。他们正在提供 C++ 代码并且在转换为 Python(上面给出的代码)时它不起作用。或者线程给出了运动检测的代码。我正在使用 Windows 7 和 Eclipse 与 Pydev 进行开发。我该怎么办?
【问题讨论】:
-
@AnoopK.Prabhu 相同 SampleCB() 错误
-
@PrakharMohanSrivastava 请找到并发布指向您相机手册的链接。您可能在 URL 中使用了错误的参数?另外,这听起来像一个小细节可能是错误的,所以here is a chat room任何人都可以讨论,所以我们不需要使用 cmets 进行讨论。
-
Prakhar 告诉我相机是 M1103 所以this should be the manual。
-
@PrakharMohanSrivastava 我看到了您关于将视频放入 tkinter 的其他问题。这是否意味着这部分现在正在工作?如果是这样,您能否接受 berak 的答案或在解决方案中发布您自己的答案?我知道开始使用 OpenCV 可能会令人沮丧,所以这可能会在未来帮助很多其他人。
标签: python c++ opencv video-streaming ip-camera