ich benutze diese funktionen, um zeichen bild zu segmentieren, aber das programm crach, somone kann mir helfen, bitte lösung zu finden, warum es crach?opencv zeichen void segmentierung
Antwort
Sie müssen die Linie bestimmen, die den Absturz verursacht. Dafür kann ich auf zwei Arten denken:
- Verwenden Sie einen Debugger;
- oder wenn Sie Angst, dass, verwenden Sie die
printf()
Methode:
Die printf()
Verfahren beinhaltet in Ihrem Programm einen printf()
Anruf nach jedem Funktionsaufruf platzieren, so dass, wenn Sie Ihre Anwendung ausführen können Sie in der Konsole sehen was war die letzte printf()
Nachricht. Dadurch können Sie den Code finden, der für den Absturz verantwortlich ist. Beispiel:
printf("dbg10\n");
IplImage *img_cv = cvLoadImage("plaque.jpg");
printf("dbg20\n");
cvSetImageROI(img_cv,cvRect(8,10,60,35));
printf("dbg30\n");
IplImage *img_pl = cvCreateImage(cvGetSize(img_cv),img_cv->depth,img_cv->nChannels);
printf("dbg40\n");
cvCopy(img_cv,img_pl, NULL);
printf("dbg50\n");
cvResetImageROI(img_cv);
printf("dbg60\n");
//etc
Von dem, was ich in Ihrem Code gesehen, haben die ersten zwei Anrufe das Potenzial, Ihre Anwendung zum Absturz bringen: wenn cvLoadImage()
ein Bild nicht geladen werden kann wird es einen NULL-Zeiger zurück. Da die nächste Funktion den Zeiger als Parameter empfängt, versucht sie, den Nullzeiger zu dereferenzieren, was zu einem Absturz führen kann. Lösung? Überprüfen Sie immer die freaking Rückkehr der Anrufe, die Sie machen:
IplImage *img_cv = cvLoadImage("plaque.jpg");
if (!img_cv)
{
printf("Failed to load image.\n");
exit(1);
}
cvSetImageROI(img_cv,cvRect(8,10,60,35));
Ich versuche es mit Printf(), aber es ist nicht in Ordnung !!! es crach – Butterflay
Die printf-Aufrufe sind nur, um Ihnen einen Hinweis darauf, wo der Absturz passiert, wird es nicht das Problem beheben. – karlphillip
- 1. Segmentierung und Maskierung aller Rotschattierungen von einem Bild mit opencv
- 2. OpenCV putText() neue Zeile Zeichen
- 3. Gesture Segmentierung in Android
- 4. Pointer Arithmetische Segmentierung Ausgabe
- 5. Qt Segmentierung Fehler strtod
- 6. Rekursive Floodfill Segmentierung Fehler
- 7. Gebiet Segmentierung innerhalb eines segmentierten Bereichs
- 8. Thread Beispiel, Segmentierung Fehler
- 9. Segmentierung Fehler für Schleife
- 10. + (void) oder - (void) Unterschied?
- 11. Segmentierung in Linux: Segmentierung und Paging sind redundant?
- 12. Segmentierung auf vprintf.c
- 13. kubectl werfen Segmentierung Fehler
- 14. Schienen Segmentierung Fehler Byebug
- 15. Git Segmentierung Fehler: 11
- 16. Segmentierung. strcmp [C]
- 17. Mergesort in C++: Segmentierung Fehler
- 18. Semaphor Simulationsprogramm: Segmentierung Fehler Fehler
- 19. Unit Testing Void Methoden/Mocking Objekt Tell-Tale Zeichen
- 20. Was bedeutet "typedef void (* Etwas)()" bedeuten
- 21. Erweitern von AsyncTask <Void, Void, Void>
- 22. ungültige Konvertierung von 'void *' in 'void * (*) (void *)' C++?
- 23. Debuggen Merge .swiftmodule: Segmentierung Fehler: 11
- 24. kann '* void (MyClass :: *) (void *) in void * (*) (void *) in der Funktion pthread_create nicht konvertieren
- 25. Fehler: Konvertierung von 'void (FlashWork :: *) (int, siginfo_t *, void *)' zu 'void * (*) (int, siginfo_t *, void *)'
- 26. Bildverarbeitung auf CUDA oder OpenCV?
- 27. Ich bekomme Segmentierung Fehler für Merge-Sort
- 28. C++ - Segmentierung Fehler beim Lesen der Binärdatei
- 29. Over-Segmentierung von Watershed-Algorithmus
- 30. Yosemite Svn 1.6.6 Segmentierung Fehler
Können Sie es im Debug-Modus laufen und uns sagen, welche Linie abstürzt, bitte? Welches Betriebssystem und welchen Compiler verwenden Sie? – dannyxyz22
Ich benutze Qt Creator, um zu kompilieren, aber ich denke, ich habe kein Kompilierungsproblem, weil wenn ich nur die fünf ersten Zeilen versuche, führe ich das SetImageROI aus, aber wenn ich den Code von CvFindContours hinzufüge, dann denke ich, dass ich ein Problem habe im Code der Kontur – Butterflay
Wenn diese Frage erfolgreich beantwortet wurde, sollten Sie die offizielle Antwort auswählen, indem Sie auf das Kontrollkästchen in der Nähe klicken. Wenn nicht, sollten Sie Ihre eigene Antwort hinzufügen. – karlphillip