当前位置: 首页 > 知识库问答 >
问题:

更改OpenCV视频文件分辨率

别宏盛
2023-03-14

我正在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一起安装。

如果需要更多的细节,请告诉我。

谢谢你的帮助

编辑:我已经意识到这顶帽子。集合(…)html" target="_blank">函数返回一个布尔值,所以我尝试将它们打印出来,它们都返回0。这当然确认了帧没有调整大小。还是不知道为什么。。。

编辑2:现在,对于临时解决方案,我在读取后使用以下行(图):

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

这是有效的。但我猜这并不是最理想的解决方案。

共有1个答案

谭骏
2023-03-14

使用

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

后读(图像)似乎是解决这个问题的最佳解决方案。所以总(测试)代码变成:

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视频捕获的分辨率。不管怎样,分辨率总是640x480。我使用的代码是用C编写的,我使用的是opencv 3.4.8。我已经创建了一个超级简单的程序来做这件事,不管我怎么尝试,它似乎都不起作用。 以下是完整的代码: 当我运行上述代码时,帧总是640x480。 我已尝试使用

  • 我想用我的相机拍摄1920x1080视频,但我遇到了两个问题 初始化视频捕获时,它会将宽度/高度更改为640/480 当我试图在cv2中更改宽度/高度时,图像变得混乱 当在cv2中设置1920x1080时,图像变成蓝色,底部有一个故障条 根据v4l2-ctl,事情是这样的。蓝色图像似乎不是像素格式变化的结果(例如。RGB至BGR) 最后,这里是一个以640x480拍摄的具有正确颜色的图像示例。代码

  • 我在Ubuntu 12.04 64位上使用OpenCV 2.4.5。我希望能够设置我的罗技C310网络摄像头输入的分辨率。相机支持高达1280x960在30fps,我能够在guvcview在这个分辨率查看视频。但是OpenCV总是以640x480的速度获取视频。 试图用cap更改分辨率。设置(CV\U CAP\U PROP\U FRAME\U WITH,1280)和CAP。创建视频捕获封盖后立即设

  • 问题内容: 所以现在有适用于Java的 OpenCV …!谁能告诉我如何用它打开Videofiles? 我尝试浏览整个Internet,但一无所获。VideoCapture类的文档不是很有帮助,因为它给出了一个C#示例并显示了如何从网络摄像头捕获。 OpenCV的Q&A也无济于事,因为没有(公开)方法可以向您提供文件名字符串。 但它 应该 按照API的 规定 工作。但是它没有,但是VideoCap

  • 我已经开发了一个2D侧滚动平台一段时间了。这是我的第一场正式比赛,快结束了。到目前为止,我还没有过多考虑过决议。 我的游戏是基于瓷砖的,大多数瓷砖和玩家精灵都是。尺寸为40x40像素的PNG文件。默认屏幕高度和宽度为1280x720。据我所知,现在的大多数游戏都有很多不同的分辨率选择和不同的纵横比。 我想给玩家几个分辨率的选择,比如800x600、1024x768和1280x720。这需要这样做,

  • 我正在寻找有效的方法来减少一些视频重量(作为上传的 -提取的被“重新压缩”,重量稍小,但分辨率与原始视频中的分辨率相同。。。 那么,问题是:如何使用和其他附带的类和方法压缩和重新缩放/更改视频分辨率? 注:这里有很多关于muxer的有用信息,上面的代码基于,方法cloneMediaUsingMuxer