OpenCV 捕获视频 Ubuntu 12.0.4

Posted

技术标签:

【中文标题】OpenCV 捕获视频 Ubuntu 12.0.4【英文标题】:OpenCV capturing video Ubuntu 12.0.4 【发布时间】:2014-05-15 09:39:24 【问题描述】:

我需要一些帮助来解决一个奇怪的问题。

我在 Ubuntu 12.0.4 中做了一个用于捕获视频的简单应用程序,我正在使用带有 C++ 的 eclipse 和 OpenCV 库。所以问题是我正在使用一种 IPcameras 并且一切都很完美,这是我正在工作的代码:

int main(int argc, char *argv[])

    cv::VideoCapture cap("http//:192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=admin&pwd=admin&.mjpg");

    cv::Mat frame;
    cv::namedWindow("video");

    cvMoveWindow("video", 0, 0);

    while ( cap.isOpened() )
           
        cap >> frame;

        if(frame.empty()) break;

        cv::imshow("video", frame);

        if(cv::waitKey(30) >= 0) break;
    

    return 0;

效果很好。我的问题是现在我必须使用其他 IPcameras,我不知道为什么它不起作用,我使用相同的代码(更改 Ip)并且应用程序没有任何想法。问题是我可以通过浏览器看到摄像头,所以摄像头正在工作,然后我认为应该是捕获结构的代码问题,但我尝试了很多组合但没有任何结果,我查看了 IPcamera 文档,没有任何内容。

【问题讨论】:

可能是相机正忙,或者在其他应用程序中打开。我不知道 IP 摄像头,但是对于网络摄像头,openCV 需要设备的独占锁定。 现在我看到浏览器上的相机正在改变分辨率,所以我点击:分辨​​率=32 而不是分辨率=320x240 它正在浏览器上运行,所以问题看起来像分辨率问题我猜测摄像头不忙,但我仍然无法从我的应用程序中看到摄像头,看起来由于某种原因应用程序无法捕获视频。 【参考方案1】:

我找到了解决方案,最后问题是我使用的 IP 摄像机使用“rtsp”协议,但我试图使用 http。

我不得不使用“rtsp”

感谢大家的帮助。

【讨论】:

【参考方案2】:

您的 IP 地址格式不正确(使用http:// 而不是http//:

int main(int argc, char *argv[])

    cv::VideoCapture cap("http://192.168.1.11:80/videostream.cgi?resolution=320x240&rate=0&user=admin&pwd=admin&.mjpg");
    cv::Mat frame;
    cv::namedWindow("video");

    ...

: 必须紧跟协议名称 (http)

【讨论】:

嗨 Marcassin 很抱歉这是一个复制和粘贴错误,我的格式正确为 http:// sorry 对不起,你的问题没有解决 :-)【参考方案3】:

尝试以下代码捕获....

if(cap.isOpened())

while ( cap.grab() )
           
        cap.retrieve(frame);

        cv::imshow("video", frame);

        if(cv::waitKey(30) >= 0) break;
    

【讨论】:

您好,谢谢您的回答我尝试了您的代码,但还是一样,我认为问题出在捕获中,因为如果我写 cout cv::VideoCapture 上限; const std::string videoStreamAddress = "192.168.1.47/…"; if(!cap.open(videoStreamAddress)) std::cout 即使它没有显示任何内容,也没有关于“错误打开视频......”所以它甚至无法打开视频。我没有什么我能做的了

以上是关于OpenCV 捕获视频 Ubuntu 12.0.4的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenCV 捕获和保存视频

OpenCV 视频捕获 API

在android中使用opencv捕获视频帧

视频捕获期间显示灰屏 - OpenCV

以Windows形式捕获openCV视频[重复]

OpenCV - 如何捕获 rtsp 视频流