gpt4 book ai didi

c++ - 使用 OpenCV 读取 mp4 (Go Pro) 视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:24 24 4
gpt4 key购买 nike

在 Visual Studio 2013 中使用带有 C++ 接口(interface)的 OpenCV 时,我无法读取某些视频文件。我已经能够读取其他视频格式,所以请相信我的代码没问题。

问题视频文件是使用 Go Pro 拍摄的,并且是 mp4。我可以在使用 OpenCV 的同一台机器上使用经典媒体播放器播放它们。我已使用 MediaInfo 收集有关视频文件的信息:

格式:MPEG-4格式简介:JVT编解码器 ID : avc1文件大小:126 MiB

我曾尝试使用 OpenCV 的 set 函数显式提供 fourcc 代码,并提供 divx 作为代码和 avc1,但没有成功。

我的程序代码如下:

int main(int argc, char** argv) {
if (argc != 2) {
help(argv);
system("Pause");
return 1;
}

std::string arg = argv[1];
VideoCapture capture;
capture.set(CV_CAP_PROP_FOURCC, CV_FOURCC('A', 'V', 'C', '1'));
capture.open(arg);
if (!capture.isOpened()) {
cerr << "Failed to open video file!\n" << endl;
help(argv);
system("Pause");
return 1;
}
return process(capture);
}

void help(char** argv) {
cout << "\n TBC" << endl;
}

int process(VideoCapture& src) {
Scalar const LOW_HSV_THRESHOLD(120, 45, 75);
Scalar const HIGH_HSV_THRESHOLD(140, 55, 85);
string windowName[] = { "Original", "HSV", "In Range", "Binary"};
namedWindow(windowName[0], CV_WINDOW_KEEPRATIO);
namedWindow(windowName[1], CV_WINDOW_KEEPRATIO);
namedWindow(windowName[2], CV_WINDOW_KEEPRATIO);
namedWindow(windowName[3], CV_WINDOW_KEEPRATIO);
Mat matOriginal;
Mat matHsv;
Mat matInRange;
Mat dst;
src >> matOriginal;

cvtColor(matOriginal, matHsv, CV_BGR2HSV);
GaussianBlur(matHsv, matHsv, Size(5, 5), 1.5);

cvtColor(matOriginal, matInRange, CV_BGR2GRAY);
threshold(matInRange, dst, 100, 255, THRESH_BINARY);
//inRange(matHsv, LOW_HSV_THRESHOLD, HIGH_HSV_THRESHOLD, matInRange);
imshow(windowName[0], matOriginal);
imshow(windowName[1], matHsv);
imshow(windowName[2], matInRange);
imshow(windowName[3], dst);

waitKey(0);
return 0;
}

}

如有任何帮助,我们将不胜感激。

非常感谢,

凯文

最佳答案

出于文档目的,我扩展了我的评论作为解决此问题的方法。

用于 windows 的预构建 opencv 库可能未使用 ffmpeg 支持进行编译,而 ffmpeg 支持可以读取多种视频格式。

一个快速的'n'dirty 解决方法是安装ffmpeg并将其添加到 Windows PATH环境变量。

不过,正确的解决方案是在安装 ffmpeg 后从源代码构建 opencv 库。这通过使用 CMake-GUI 得到简化这允许您轻松配置 opencv 的多个选项,例如添加 ffmpeg 支持(USE_FFMPEG 标志)。 Cmake 还将生成 Visual Studio 项目文件,因此您可以轻松地编译该库。

有关更详细的指南,请查看 official opencv documentation 上的视频指南页

关于c++ - 使用 OpenCV 读取 mp4 (Go Pro) 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422569/

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