Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV:录制扭曲的视频 我在C++中使用一个小应用程序(使用OpenCV)记录一个视频,然后让你通过在X,Y,Z中旋转视图来扭曲它。p>_Opencv_Video_Record_Homography_Panoramas - Fatal编程技术网

OpenCV:录制扭曲的视频 我在C++中使用一个小应用程序(使用OpenCV)记录一个视频,然后让你通过在X,Y,Z中旋转视图来扭曲它。p>

OpenCV:录制扭曲的视频 我在C++中使用一个小应用程序(使用OpenCV)记录一个视频,然后让你通过在X,Y,Z中旋转视图来扭曲它。p>,opencv,video,record,homography,panoramas,Opencv,Video,Record,Homography,Panoramas,现在,我刚刚开始测试旋转,每次迭代都让它旋转一个小角度。尽管视频的显示效果很好,但写入文件的过程却不是这样。 从代码中可以看出,我使用纯旋转单应性扭曲每个帧,然后显示和写入扭曲帧。出于某种原因,即使未扭曲的视频只有几MB大,但扭曲的视频只有几KB,不能使用Ubuntu的标准视频播放器播放。我最好的猜测是,由于我正在扭曲帧,我正在以openCV无法正确保存的方式影响帧大小。但我不知道如何修复它 有什么想法吗 代码: //我已经录制了视频并将其保存到名为videoName的文件中,每秒帧数为FPS。

现在,我刚刚开始测试旋转,每次迭代都让它旋转一个小角度。尽管视频的显示效果很好,但写入文件的过程却不是这样。 从代码中可以看出,我使用纯旋转单应性扭曲每个帧,然后显示和写入扭曲帧。出于某种原因,即使未扭曲的视频只有几MB大,但扭曲的视频只有几KB,不能使用Ubuntu的标准视频播放器播放。我最好的猜测是,由于我正在扭曲帧,我正在以openCV无法正确保存的方式影响帧大小。但我不知道如何修复它

有什么想法吗

代码:

//我已经录制了视频并将其保存到名为videoName的文件中,每秒帧数为FPS。
视频捕获视频(videoName);
如果(!video.isOpened()){

std::cerr也许您应该仔细阅读一下如何从中保存视频文件。此外,您的代码中有一个输入错误。在上述代码的第35行中,应该是

vwriter2.write(pFrame);

//I already recorded the video and saved it into a file called videoName with FPS frames/sec. 
VideoCapture video(videoName);
if(!video.isOpened()) {
   std::cerr << videoName <<" could not be opened\n";
   return -1;
 }
namedWindow(videoName, CV_WINDOW_AUTOSIZE);
namedWindow("lol",CV_WINDOW_AUTOSIZE);
std::cout << video.get(CV_CAP_PROP_FPS) << std::endl;
float xTheta = 0;
float yTheta = 0;
string oVideoName = "oVideo.avi";
Size ofSize(video.get(CV_CAP_PROP_FRAME_WIDTH),video.get(CV_CAP_PROP_FRAME_HEIGHT));
VideoWriter vwriter2(oVideoName,CV_FOURCC('D','I','V','X'),FPS,ofSize,true);
if (!vwriter2.isOpened())
{
  std::cout << "ERROR: Failed to write the video" << std::endl;
  return -1;
}
while(true) {
  Mat frame;
  bool bSuccess = video.read(frame);
  if(!bSuccess || waitKey(1000/FPS) >= 0)
  {
    std::cout << "END\n";
    break;
  }
  yTheta += 0.00002;
  Mat Rx = (Mat_<float>(3,3) << 1,0,0,0,cos(xTheta),-sin(xTheta),0,sin(xTheta),cos(xTheta));
  Mat Ry = (Mat_<float>(3,3) << cos(yTheta),0,sin(yTheta),0,1,0,-sin(yTheta),0,cos(yTheta));
  Mat H = Rx * Ry;
  Mat pFrame(frame.size(),frame.type());
  warpPerspective(frame,pFrame,H,frame.size());
  imshow("lol", pFrame);
  vwriter.write(pFrame);
}
return 0;