【问题标题】:Generate video from self shots从自拍生成视频
【发布时间】:2013-11-17 11:30:15
【问题描述】:

我不确定这是否是发布此类问题的正确位置。但也许,有人可以帮助我。

在过去的几个月里,我从一个人那里拍了很多照片。这些图片都是正面图片,有不同的闪电,一次是靠近相机,一次是远离相机等。现在我想用所有图片创建一个电影,以展示一些进步。但是在我开始手动校正照片(修复闪电,使所有面孔大小相同,稍微旋转面孔......)并将它们放入 Premiere 之前,我想知道是否有某种软件可以实现这一点.它可能是一个程序、脚本、库……我读过一些关于 open cv 的内容,但也许已经有一些东西了。

【问题讨论】:

  • 我不明白反对意见。有什么原因吗?

标签: opencv video image-processing photo face-detection


【解决方案1】:

可能有 OpenCV ,

根据您的要求,第一件事是

灯光调节

OpenCV 有一个关于Changing the contrast and brightness of an image 的完整文档。以另一种方式,您可以使用histogram equalization 调整对比度。为此,您需要将 RGB 图像转换为 HSV 并将 equalizeHist() 应用于 V(value) 通道。

OpenCV 调整大小

要调整大小,您可以使用 OpenCV resize 函数

这是一段代码如何做到这一点

Mat src = imread(image.jpg);
Mat dst;
resize(src, dst, Size(640, 480), 0, 0, INTER_CUBIC); // resize to 640X480 resolution

轮换

对于旋转,您可以使用Affine Transformations

视频写作

OpenCV 有VideoWriter 类可以使用各种帧速率、编解码器、分辨率等编写视频。

这里是使用一系列图像编写视频的源代码,假设您的图像名称为 0.jpg,1.jpg,2.jpg.....

int main()
{

  VideoWriter writer;
  writer.open("out.avi",CV_FOURCC('M','J','P','G'),15,Size(640,480),true);//Initialize video writer. The resolution should be same as source image
  if(!writer.isOpened()){
    cout<<"Cannot write video..!!!"<<endl;
    return -1;
    }

  char name[10];
  int i=0;
  while(1){
  sprintf(name,"%d.jpg",i++);
  Mat src=imread(name,CV_LOAD_IMAGE_COLOR);
   if (src.empty()){ 
     cout<<"No source found...."<<endl;
     break;
    }
  writer.write(src);
  imshow("src", src);
  waitKey(0);
  }
    return 0;
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-03-01
  • 2012-11-16
  • 2019-08-14
  • 2015-04-27
  • 2014-08-21
  • 1970-01-01
  • 2016-05-05
  • 2013-10-22
相关资源
最近更新 更多