Also ich habe ein Objekt mit drei globalen Mat (bei mir tragen), möchte ich mit Doppel füllen, ich habe auch ein DruckverfahrenOpenCV C++ Mat MADNESS
so in Main.hpp
Main class {
...
Mat FIXED;
Mat one;
Mat two;
...
}
und in meinem Main.cpp ich habe
void Main::printMat(Mat mat) {
int rows = mat.rows;
int cols = mat.cols;
for (int j = 0, j < cols; j++) {
for (int i = 0, i < rows; i++) {
printf("%lf ", mat.at<double>(i,j));
}
printf("\n");
}
}
fein Also für jeden Matrixeingang es alles speichert.
printMat(one); <--this works
Dieses feine funktioniert, aber ich tun dann
two = FIXED.clone();
DANN DIESES BREAKS, habe ich keine Ahnung, warum HELP
printMat(one); <--this doesnt work
Wenn ich die .clone auf Kommentar() line es funktioniert, wenn ich eine leere Matrix der gleichen Größe und speichern, um FIXED funktioniert es nicht.
Alle Matrizen sind vom Typ 'CV_64FC1'? Wenn nicht, wird das wahrscheinlich brechen. sollten Sie 'printMat' nicht von einer Instanz der Klasse Main aufrufen? BTW, können Sie einfach 'cout << mat << endl;' für das Drucken von Matrizen – Miki
Think es standardmäßig 1 Kanal nicht sicher. Wie auch immer, es war mein Fehler Ich schrieb eine Antwort auf. Raten Sie Rookie-Fehler Referenc vs Wert Fehler, aber leicht verwirrend. – Vroosh
Ich verstehe nicht, warum Sie die Matrix beim Drucken transponieren (Ihr Code druckt die Werte jeder Spalte in einer Zeile, dann Zeilenumbruch und gehen Sie zur nächsten Zeile), noch warum Sie nicht 'cout' verwenden, aber Sie können bewerkstellige dieselbe Aufgabe mit etwas besser lesbarem (IMHO): 'für (int j = 0, j (i, j)); } printf ("\ n"); } ' –