Anfänger in openCV und ich frage mich nur, warum es Mat Mat Datentypen sind nicht erforderlich, Zeiger-Initiierung. Sie könnenWarum müssen Mat-Typen keine Zeiger sein?
Mat image
statt
Mat* image
Anfänger in openCV und ich frage mich nur, warum es Mat Mat Datentypen sind nicht erforderlich, Zeiger-Initiierung. Sie könnenWarum müssen Mat-Typen keine Zeiger sein?
Mat image
statt
Mat* image
Der erste, den Raum für eine Matte-Objekt verwenden, ordnet (der Header, wenn Sie mögen) in genau der gleichen Weise wie int a
Platz für ein int zuordnet.
Wenn Sie die Größe und den Typ der Daten angeben oder ein Bild darin laden, wird der Speicher für die tatsächlichen Daten zugewiesen.
Dies ist wirklich eine elementare C oder C++ Programmierfrage, nichts mit openCV zu tun. Die Mat img
und Mat * img = new (Mat (...)) `machen beide Platz für die Mat selbst (nur die Kopfzeile). In beiden Fällen können Sie auch die Größe der Daten angeben, und der Mat wird intern Speicher für die Bilddaten zuweisen. Dies ist für Sie unsichtbar und hat nichts damit zu tun, wie Sie die Matte lagern.
also theoretisch könnte ich eine Mat * img und später nur * img = Mat (param, param, param, param) machen? – lluisrojass
nein - du kannst 'Mat * img = neu (Mat (rows, cols, type))' vorausgesetzt, du bist in C++ –
hey man, wenn es die Mühe nicht wert ist würde ich wirklich von einer Erklärung profitieren. Müssen Sie nur einen Zeiger angeben, wenn Sie Daten zuweisen? Das macht Sinn. Aber warum braucht 'Mat img (rows, cols, type)' keinen Zeiger? – lluisrojass