0

我的一台笔记本电脑上连接了一个网络摄像头。相机由 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")

但是运行过程中出现错误——Type Error : an integer is required。如果我用 0 替换 IP 地址,程序就会运行。有什么方法可以用 openCV 抓取视频流?

4

2 回答 2

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);
        }
    }
}
于 2013-08-18T09:27:06.570 回答
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 上工作得很好,希望它也适合你。

于 2020-01-31T16:04:06.800 回答