Python OpenCV和媒体流

时间:2013-08-18 08:58:16

标签: python opencv video streaming

我的笔记本电脑附有一个网络摄像头。相机由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获取视频流?

2 个答案:

答案 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上非常有效,希望它也对您有用。