gpt4 book ai didi

c++ - 无法更改 OpenCV 视频捕获分辨率

转载 作者:行者123 更新时间:2023-12-03 07:21:44 24 4
gpt4 key购买 nike

我遇到的问题是我无法更改 OpenCV 视频捕获的分辨率。无论如何,分辨率始终为 640x480。我使用的代码是用 C++ 编写的,我使用的是 opencv 3.4.8。我创建了一个 super 简单的程序来执行此操作,无论我尝试什么,它似乎都不起作用。
这是完整的代码:

#include "opencv2/opencv.hpp"
using namespace cv;
int main(int argc, char** argv)
{
VideoCapture cap(0);
cap.set(CAP_PROP_FRAME_HEIGHT, 1080);
cap.set(CAP_PROP_FRAME_WIDTH, 1920);


// open the default camera, use something different from 0 otherwise;
// Check VideoCapture documentation.
if (!cap.open(0))
return 0;
for (;;)
{
Mat frame;
cap.read(frame);
if (frame.empty()) break; // end of video stream
imshow("this is you, smile! :)", frame);
if (waitKey(10) == 27) break; // stop capturing by pressing ESC
}
// the camera will be closed automatically upon exit
// cap.close();
return 0;
}
当我运行上面的代码帧时总是 640x480。
我尝试使用 cap.set() 更改分辨率到更小和更高的分辨率。我正在使用 ImageSource 相机,并且我知道相机支持我尝试使用的分辨率,并且我可以在另一个程序中以这些分辨率查看视频。
我尝试过使用不同的相机/网络摄像头。
我在创建 VideoCapture 时尝试显式更改后端 API对象 - 即 VideoCapture cap(0, CAP_DSHOW) .我试过 DSHOW , FFMPEG , IMAGES , ETC。
我尝试在不同的计算机上运行相同的程序。
结果始终是相同的 640x480 分辨率。
我缺少一些简单的东西吗?我似乎可以在 SO 上找到的所有其他帖子都指向使用 cap.set()更改宽度和高度。

最佳答案

这取决于您的相机后端是什么。正如文档所说:

Each backend supports devices properties (cv::VideoCaptureProperties)in a different way or might not support any property at all.


在此 documentation 中也提到过:

Reading / writing properties involves many layers. Some unexpectedresult might happens along this chain. Effective behaviour dependsfrom device hardware, driver and API Backend.


OpenCV Video I/O 模块似乎不支持您的相机后端。
注:我也遇到过这样的相机,其中一些不同的分辨率使用不同的数字。例如,您可以通过尝试 VideoCaptur(-1) 来获得所需的分辨率。 , VideoCapture(1) , VideoCapture(2) ...

关于c++ - 无法更改 OpenCV 视频捕获分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64902985/

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