使用opencv从网络摄像机获取高分辨率图像



我有一个网络摄像头。它允许我有两种不同的编码类型,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 nulln");
        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;
 }

如何拍摄高质量的图像?我不知道问题是来自我的相机,或者我的url,或者我的代码。

我在windows 7上使用opencv 2.4。

如有任何帮助,不胜感激

我在回答我自己的问题。

起初我认为这个问题是植根于OpenCV,因为我发现了许多关于设置相机参数失败的线程。看来vcap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);vcap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);的工作不太好。

无论如何,我已经检查了我的相机开发文件在其网站上,并找到了H.264视频流的另一个URL。我已经更改了我的URL,它工作了。支持1920X1080张图片

相关内容

  • 没有找到相关文章

最新更新