gpt4 book ai didi

opencv - 更改 OpenCV 视频文件分辨率

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:02 30 4
gpt4 key购买 nike

我正在 OpenCV (2.4.8) 中创建一个程序,它应该读取视频文件并对它们进行一些计算。对于这些计算,我不需要高分辨率帧,我完全可以使用 640*360 作为分辨率。

在早期测试中,我连接了网络摄像头并使用了:

VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 360);
Mat image;
cap.read(image);
namedWindow("firstframe", 1);
imshow("firstframe", image);
waitKey(0);

它完美地调整了图像的大小。现在我要进入下一步,我想将我的程序用于存储的视频而不是实时提要(我用于测试)。当我用源文件路径(字符串)更改“0”时,文件已加载,但分辨率仍为 1920*1080。

我做错了什么吗?有没有办法“即时”加载较低分辨率的视频?

我已阅读 OpenCV 文档。一些设置被标记为“仅限相机”,但此设置不是: http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#videocapture-videocapture

我在 Mac 上使用 OpenCV,并使用 MacPorts 安装它。

如果需要更多详细信息,请告诉我。

先谢谢你的帮助

编辑:我已经意识到 cap.set(...) 函数返回一个 bool 值,所以我尝试将它们打印出来并且它们都返回 0。这当然证实了框架没有调整大小。仍然不知道为什么...

编辑 2 :所以现在,作为一个临时解决方案,我在 read(image) 之后使用以下行:

resize(image, image, Size(640, 360), 0, 0, INTER_CUBIC);

这行得通。但我猜这并不是真正的最佳解决方案。

最佳答案

使用

resize(image, image, Size(640, 360), 0, 0, INTER_CUBIC);

after read(image) 似乎是解决这个问题的最佳方案。所以总的(测试)代码变成了:

VideoCapture cap("path/to/file");
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 360);
Mat image;
cap.read(image);
resize(image, image, Size(640, 360), 0, 0, INTER_CUBIC);
namedWindow("firstframe", 1);
imshow("firstframe", image);
waitKey(0);

如果有人知道更好的方法,请告诉我。

关于opencv - 更改 OpenCV 视频文件分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840797/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com