我刚刚在使用Visual Studio 2013编译完成OpenCV 3后,尝试进行编码,但是遗憾的是,我无法确定问题出在哪里。
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main() {
VideoCapture vcap(0);
if (!vcap.isOpened()) {
cout << "Error opening video stream or file" << endl;
return -1;
}
int frame_width = vcap.get(cv::CAP_PROP_FRAME_WIDTH);
int frame_height = vcap.get(cv::CAP_PROP_FRAME_HEIGHT);
VideoWriter video("out.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, Size(frame_width, frame_height), true);
for (;;) {
Mat frame;
vcap >> frame;
video.write(frame);
imshow("Frame", frame);
char c = (char)waitKey(33);
if (c == 27) break;
}
return 0;
1>------ Build started: Project: ConsoleApplication12, Configuration: Release x64 ------
1> Source.cpp
1>Source.cpp(21): warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
1>Source.cpp(22): warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
1>Source.cpp(23): error C3861: 'CV_FOURCC': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我不知道该用什么替换“CV_FOURCC”。
编辑后:
int frame_width = vcap.get(cv::CAP_PROP_FRAME_WIDTH);
int frame_height = vcap.get(cv::CAP_PROP_FRAME_HEIGHT);
int codec = cv::VideoWriter::fourcc('M', 'J', 'P', 'G');
VideoWriter video("out.avi", codec, 10, Size(frame_width, frame_height), true);