我有一个网络摄像头。它允许我有两种不同的编码类型,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张图片