我不确定这是否是发布此类问题的正确位置。但也许,有人可以帮助我。
我过去几个月从一个人那里拍了很多照片。这些照片都是前脸照片,闪光灯不同,有一次脸部靠近相机,然后一次远离等等。现在我想制作一部带有所有照片的电影,以显示一些进展。但在我开始手动修正照片之前(修复闪电,使所有面部大小相同,稍微旋转面部......),并将它们放入Premiere,我想知道是否有某种软件可以实现这一点。它可能是一个程序,脚本,库......我读了一些关于open cv的内容,但也许已经有了一些东西。答案 0 :(得分:1)
可以使用OpenCV,
根据您的要求,首先是
照明调整
OpenCV有关于Changing the contrast and brightness of an image的完整文档。另一方面,您可以使用histogram equalization调整对比度。为此,您需要将RGB图像转换为HSV并将equalizeHist()应用于V(值)通道。
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;
}