使用 opencv 从网络摄像机获取高分辨率图像
Take high resolution image from ip camera using 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 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;
}
如何才能拍摄出更高质量的图像。我不知道问题出在我的相机、我的 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 图像。
我有一个网络摄像头。它允许我有两种不同的编码类型,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;
}
如何才能拍摄出更高质量的图像。我不知道问题出在我的相机、我的 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 图像。