Я пытаюсь сделать фильм с openCV.Я могу поместить все изображения в avi, и это прекрасно работает, за исключением того, что изображение наклонено под большим углом.Похоже, что он был размазан по всему изображению.
Рамки идеально квадратные, поэтому нельзя путать высоту и ширину.Изображения 24 бит.Еще одна странность в том, что она не выглядит последовательной, когда это происходит.иногда выглядит великолепно, иногда наклонно.
Вот изображение из фильма: http://dl.dropbox.com/u/63600049/MIP.avi
Вот код:
Метод PINVOKE
IntPtr _ptr = CvInvoke.cvCreateVideoWriter(AVIFilename, CvInvoke.CV_FOURCC('M', 'J', 'P', 'G'), 15, size, 1);
int count = 0;
for (int n = 1; n < Frames.Length; n++)
{
if (Frames[n].Trim().Length > 0)
{
try
{
FileInfo file = new FileInfo(Frames[n]);
IntPtr ptr = CvInvoke.cvLoadImage(file.FullName, Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR | Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYDEPTH);
if (ptr == IntPtr.Zero)
throw new NullReferenceException(String.Format("Unable to load image from file \"{0}\".", file.FullName));
CvInvoke.cvWriteFrame(_ptr, ptr);
//VW.WriteFrame<Bgr, byte>(frame);
count++;
}
catch (Exception ex)
{
System.Diagnostics.Debug.Print(ex.Message);
}
}
}
CvInvoke.cvReleaseVideoWriter(ref _ptr);
Версия EMGU
public static void CreateAVIVideoEMGU(string AVIFilename, string[] Frames)
{
Bitmap bitmap = new Bitmap(Frames[0]);
VideoWriter VW = null;
VW = new VideoWriter(AVIFilename, CvInvoke.CV_FOURCC('M', 'J', 'P', 'G'), 15, bitmap.Height, bitmap.Width, true);
int count = 0;
for (int n = 1; n < Frames.Length; n++)
{
if (Frames[n].Trim().Length > 0)
{
var frame = new Emgu.CV.Image<Bgr, byte>(ConvertBitmapTo24(new Bitmap ( Frames[n])));
VW.WriteFrame<Bgr, byte>(frame);
count++;
}
}
VW.Dispose();
}
Все изображения - 24-битные JPG одинаковых размеров