OpenCV C++ - 无法显示视频
OpenCV C++ - Not able to show a video
Linux Debian 10 + OpenCV 320.
播放视频的非常基本的示例,但应用程序很快就结束了,没有打开新的window并且没有错误。
我用相同的视频进行了测试,但类型不同:mp4 和 webm。 VLC 和其他视频播放器可以正确显示视频。
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main(int argc, char** argv )
{
// check
if ( argc != 2 )
{
printf("usage: %s <Video_Path>\n", argv[0]);
return -1;
}
printf("Video: %s\n", argv[1]);
// load video
VideoCapture cap ( argv[1]);
if (!cap.isOpened()){
printf("Error opening video\n");
}
Mat frame;
while(1){
// cap.read(frame);
cap >> frame;
if (frame.empty()){
printf(".. frame err\n");
return -1;
}
imshow("Live", frame);
if (waitKey(5)>=0) break;
}
printf("end\n");
return 0;
}
输出为:
$ ./DisplayVideo 20200313_152914.webm
Video: 20200313_152914.webm
end
我解决了转换为 char 的问题:
if ((char)(waitKey(1))>=0){
Linux Debian 10 + OpenCV 320.
播放视频的非常基本的示例,但应用程序很快就结束了,没有打开新的window并且没有错误。
我用相同的视频进行了测试,但类型不同:mp4 和 webm。 VLC 和其他视频播放器可以正确显示视频。
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main(int argc, char** argv )
{
// check
if ( argc != 2 )
{
printf("usage: %s <Video_Path>\n", argv[0]);
return -1;
}
printf("Video: %s\n", argv[1]);
// load video
VideoCapture cap ( argv[1]);
if (!cap.isOpened()){
printf("Error opening video\n");
}
Mat frame;
while(1){
// cap.read(frame);
cap >> frame;
if (frame.empty()){
printf(".. frame err\n");
return -1;
}
imshow("Live", frame);
if (waitKey(5)>=0) break;
}
printf("end\n");
return 0;
}
输出为:
$ ./DisplayVideo 20200313_152914.webm
Video: 20200313_152914.webm
end
我解决了转换为 char 的问题:
if ((char)(waitKey(1))>=0){