2015-12-27 4 views
0
else if (comboBox1.Text == "Capture From File") 
{ 
    OpenFileDialog openFile = new OpenFileDialog(); 
    openFile.Filter = "AVI files (*.avi)|*.txt|All files (*.*)|*.*"; 
    openFile.FilterIndex = 2; 
    openFile.RestoreDirectory = true; 
    openFile.FileName =""; 
    if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    {  
     char fileName = (char*)Marshal.StringToHGlobalAnsi(openFile.FileName).ToPointer();     
     CvCapture cap = CvCapture.FromFile(fileName); 
     trackBar1.Minimum = 0; 
     trackBar1.Maximum = (int)Cv.GetCaptureProperty(cap, CV_CAP_PROP_FRAME_COUNT); 
     btnStart.Text = "Stop"; 
     timer1.Start(); 
    }    
} 

Привет, Я пытаюсь захватить видеофайл с помощью combobox и trackbar. Сначала я должен сказать, что я новичок на C#. Так что я немного застрял.Capture From File

Прежде всего, я использовал этот код на C++ после того, как начал разрабатывать свою программу на C#. Я получаю сообщение об ошибке здесь Marshal.StringToHGlobalAnsi и в то время как я хочу, чтобы попытаться получить количество кадров для TrackBar здесь

trackBar1.Maximum = (int)Cv.GetCaptureProperty(cap, CV_CAP_PROP_FRAME_COUNT); 
+0

В чем вы сомневаетесь? –

+0

Какая ошибка? –

+0

Для продолжения моего проекта все коды должны быть правильными, я принимаю ошибку. В C# я не могу использовать маршал, и я не могу получить число кадров, используя CV_CAP_PROP_FRAME_COUNT, там должно быть что-то другое, но я не знаю. Также мне нужно использовать emgu cv? Я разрабатываю свой проект с opencvsharp. –

ответ

0
if (comboBox1.Text == "Capture From File") 
     { 
      if (btnStart.Text.Equals("Start")) 
      { 
       OpenFileDialog openFile = new OpenFileDialog(); 
       openFile.Filter = "AVI files (*.avi)|*.txt|All files (*.*)|*.*"; 
       openFile.FilterIndex = 2; 
       openFile.RestoreDirectory = true; 
       openFile.FileName = ""; 
       if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
       { 
        ca = new CvCapture(openFile.FileName); 
        trackBar1.Minimum = 0; 
        trackBar1.Maximum = (int)ca.GetCaptureProperty(CaptureProperty.FrameCount); 
        btnStart.Text = "Stop"; 
        timer1.Start(); 
       } 
      } 

я уже решена моя проблема, как раз то время я не знаю кодов, что между C++ и C# имеет другой состав.