我的笔记本电脑附有一个网络摄像头。相机由Yawcam运行。它流式传输视频为192.168.1.6:80,http为192.168.1.6:8888。
在另一台笔记本电脑上,我可以在浏览器中打开这些页面并查看这些流媒体视频。 但我想捕获这些视频,用openCV和python进行图像处理。 我尝试了下面的代码
import cv2.cv as cv
cv.NamedWindow("camera", 1)
capture = cv.CaptureFromCAM("http://192.168.1.6:80");
while True:
img = cv.QueryFrame(capture)
cv.ShowImage("camera", img)
if cv.WaitKey(10) == 27:
break
cv.DestroyWindow("camera")
但是在运行期间出错 - 类型错误:需要一个整数。 如果我用0替换IP地址,程序将运行。 有没有办法用openCV获取视频流?
答案 0 :(得分:0)
IP摄像机的解决方案是:
你只需要在Python中重写
最重要的是: 使用VideoCapture对象和open()方法。
#include <opencv2/opencv.hpp>
int main(void)
{
cv::VideoCapture camera;
camera.open("http://204.248.124.202/mjpg/video.mjpg");
if (camera.isOpened()==true)
{
cv::namedWindow("camera");
int key = 0;
while (key != 27)
{
cv::Mat_<cv::Vec3b> image;
camera.grab();
camera.retrieve(image);
cv::imshow("camera",image);
key = cv::waitKey(10);
}
}
}
答案 1 :(得分:0)
我知道答案来得有点晚,但以为其他人可能会觉得有用。
尝试pip install imutils
from imutils.video import VideoStream
ips = ['192.168.1.6:80', '192.168.1.6:8888']
vs = [VideoStream(src=str(x)).start() for x in ips]
for i, vsi in enumerate(vs):
frame = vsi.read()
# Start your image processing here
这对我在Ubuntu 18.04 intel Pentium上非常有效,希望它也对您有用。