Ich habe einen Code geschrieben, um Video aus meiner Videokamera in Visual Studio mit der EMGU.CV -Bibliothek (OpenCV) für C#zu verarbeiten. Hier ist die Initialisierung der Videoaufnahme < /p>
capture = new VideoCapture(0);
< /code>
Dann greife ich die Frames mit den folgenden Codezeilen aufgrund der Dokumentation: < /p>
capture.ImageGrabbed += Capture_ImageGrabbed;
capture.Start();
< /code>
und ein weiterer Code zum Rufen und Anzeigen (Ich verwende Windows Forms App): < /p>
private void Capture_ImageGrabbed(object? sender, EventArgs e)
{
//some other code
Mat frame = new Mat();
if (capture.Retrieve(frame))
{
pictureBox1.Image = frame.ToBitmap();
}
}
< /code>
Alles hat perfekt funktioniert, bis ich anfangen wollte, das CUDA -Gerät zu verwenden, um die Leistung des Projekts zu verbessern (ich möchte jeden Frame in Echtzeit verarbeiten). Das CUDA -Gerät wird erfolgreich erkannt und in einem anderen Projekt mit Bildverarbeitung und nicht in der Videoverarbeitung perfekt verwendet. Und gleich nach der Installation von CUDA -Paket kann ich keinen Rahmen der Videokamera sehen. Ich habe keinen Code für Videokapiture geändert. Jetzt kann ich keinen Frame von Video -Gerät abrufen und es anzeigen.if (!capture.IsOpened)
{
Debug.WriteLine("Camera is not opened!");
}
else
{
Debug.WriteLine("Camera opened!");
}
< /code>
Ich habe "Kamera geöffnet!". Es gibt also kein Problem mit der Capture -Öffnung. Ich ging weiter und versuchte es mit Hand, einen Rahmen zu holen und ihn abzurufen: < /p>
if (!capture.Grab())
{
Debug.WriteLine("Grab() failed.");
}
Mat frame = new Mat();
if (!capture.Retrieve(frame))
{
Debug.WriteLine("Retrieve() failed!");
}
< /code>
Ich habe nur eine Nachricht erhalten, dass Abruf () fehlgeschlagen ist, sodass das Greifen in Ordnung ist. Ich habe auch versucht, einige Eigenschaften festzulegen, aber das hat überhaupt nichts getan: < /p>
capture.Set(CapProp.FrameWidth, 1280);
capture.Set(CapProp.FrameHeight, 720);
capture.Set(CapProp.Fps, 30);
capture.Set(CapProp.FourCC, VideoWriter.Fourcc('M', 'J', 'P', 'G'));
< /code>
(Der letzte hat mein Programm XD abgestürzt) < /p>
Ich habe auch versuchtif (capture.Read(frame)) {
//other code
}
< /code>
, aber ich habe einen Fehler:
kann keinen Einstiegspunkt mit dem Namen 'CVevideocapturerEadTomat' in DLL 'cvextern' finden.>
Die Videoaufnahme ist bei der Installation von CUDA -Unterstützung kein Bild nicht abzurufen ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post