비주얼 스튜디오에서 OpenCV를 이용하여 C++ 언어로 폴더에 있는 .jpg 파일을 mp4 동영상으로 만들어 보자.
1. c++ 프로젝트를 생성한다. 콘솔 어플리케이션 x64으로 작성한다. openCV를 사용하기 위하여 구성(C) Debug 프로젝트 속성창에서 include를 설정한다. (Debug 모드)
- 라이브러리 디렉토리를 설정한다.
3. 필요한 라이브러리를 추가한다.
4. 다음 코드를 입력하고 컴파일하고 실행하여 보자.
#include <iostream>
#include "opencv2/highgui.hpp"
#include "opencv2/core.hpp"
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
int main()
{
cv::String path("*.jpg"); //select only jpg
vector<cv::String> fn;
vector<cv::Mat> data;
cv::glob(path, fn, true); // recurse
cv::VideoWriter videoWriter;
float videoFPS = 30.0f;
videoWriter.open("test.mp4", cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), videoFPS, cv::Size(640,480), true);
//영상 저장 셋팅 실패시
if (!videoWriter.isOpened())
{
std::cout << "Can't write video !!! check setting" << std::endl;
return -1;
}
for (size_t k = 0; k < fn.size(); ++k)
{
cv::Mat im = cv::imread(fn[k]);
if (im.empty()) continue; //only proceed if sucsessful
// you probably want to do some preprocessing
data.push_back(im);
resize(im, im, cv::Size(640, 480));
imshow("Display window", im);
//받아온 Frame을 저장한다.
for(int i=0;i<60;i++) videoWriter << im;
waitKey(1000); //wait for key press
}
waitKey(2000); //wait for key press
destroyAllWindows(); //destroy all open windows
return 0;
}
폴더에 있는 모든 .jpg 파일을 하나의 동영상으로 만들어 준다.
반응형