使用 opencv 从 ip camera 获取高分辨率图像

Posted

技术标签:

【中文标题】使用 opencv 从 ip camera 获取高分辨率图像【英文标题】:Take high resolution image from ip camera using opencv 【发布时间】:2016-08-13 04:12:07 【问题描述】:

我有一个网络摄像机。它允许我有两种不同的编码类型,h264 和 mjpeg,它的最佳分辨率是 1920x1080。

我使用 iSpy 软件查找我的相机的 URL 地址。它可以拍照,但它的分辨率是640*360。

这是我的代码:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"

int main()

    cv::VideoCapture vcap;

    const std::string videoStreamAddress = "rtsp://admin:admin@192.168.0.120/snl/live/1/2/stream1.cgi";

    if (!vcap.open(videoStreamAddress))
    
        printf("camera is null\n");
        return -1;
    
    else
    
        vcap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);
        vcap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);

        cv::Mat image;
        vcap.read(image);
        cv::imshow("image",image);
        cv::imwrite("image.jpg", image);
    

    cv::waitKey(1000);
    return 0;
 

如何拍摄更高质量的图像。我不知道问题出在我的相机、网址或代码上。

我在 Windows 7 上使用 opencv 2.4。

任何帮助将不胜感激

【问题讨论】:

我会检查您在相机上请求的流的设置。这很可能是它的配置方式。 @slawekwin 是的。你是对的。感谢您的评论。 【参考方案1】:

我正在回答我自己的问题。

起初我以为问题出在 OpenCV 上,因为我发现了很多关于设置相机参数失败的线程。 vcap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);vcap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080); 好像不太好用。

无论如何,我已经在其网站上查看了我的相机开发文档,并找到了 H.264 视频流的另一个 URL。我已经更改了我的网址,并且可以正常工作。它需要 1920X1080 的图像。

【讨论】:

以上是关于使用 opencv 从 ip camera 获取高分辨率图像的主要内容,如果未能解决你的问题,请参考以下文章

使用Android IP Camera(python)在openCv中直播

如何在 Visual C++ 2010 或 2008 中使用 OpenCV 2.1 访问 ip camera (compro IP50W)

Android将字节数组从Camera API转换为颜色Mat对象openCV

基于从两个不同线程获取的时间戳匹配图像

获取相机焦距 OpenCV Android

使用 OpenCV 从 android Camera2 将 YUV 转换为 RGB ImageReader 时出现问题,输出图像为灰度