我有一个来自e-con系统的摄像头,支持UYVU编解码器视频录制.当我使用他们自己的软件(QTCam)录制视频时,它以avi格式录制YUY2 Codec,视频打开并在VLC中完美运行.
现在我尝试通过Opencv VideoWrtiter()录制视频.我使用此命令将Camera属性设置为读取UYVY Codec视频.
camera1.set(CV_CAP_PROP_FOURCC,CV_FOURCC('U','Y','V','Y'));
Run Code Online (Sandbox Code Playgroud)
并且还使用VideoWriter以AVI文件格式录制视频.
video1.open("/home/camera1UYVY.avi",CV_FOURCC('Y','U','Y','2'),30,s1,true);
Run Code Online (Sandbox Code Playgroud)
来自相机的进纸工作,我用imshow()检查.但是,录制的视频不是在VLC播放,因为它适用于从QTCam录制的视频.
即使记录的重新编码的opencv也具有相同的编解码器
我的代码如下
#include <opencv2/core/core.hpp>
#include <opencv2/video/video.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/videoio/videoio.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char **argv) {
VideoCapture camera1;
Mat frame1;
camera1.open(0);
camera1.set(CV_CAP_PROP_FOURCC,CV_FOURCC('U','Y','V','Y'));
camera1.set(CV_CAP_PROP_FRAME_WIDTH,1280);
camera1.set(CV_CAP_PROP_FRAME_HEIGHT,720);
cout << "FPS:" << camera1.get(CV_CAP_PROP_FPS) << endl;
camera1.set(CV_CAP_PROP_FPS,30);
cout << "FPS:" << camera1.get(CV_CAP_PROP_FPS) << endl;
cout << "Camera -1 Codec: " << (int)camera1.get(CV_CAP_PROP_FOURCC) << endl;
VideoWriter video1;
cout << camera1.get(CV_CAP_PROP_FRAME_WIDTH) << endl;
cout << camera1.get(CV_CAP_PROP_FRAME_HEIGHT) …Run Code Online (Sandbox Code Playgroud)