2016-07-17 13 views

Antwort

2

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.

+0

also theoretisch könnte ich eine Mat * img und später nur * img = Mat (param, param, param, param) machen? – lluisrojass

+0

nein - du kannst 'Mat * img = neu (Mat (rows, cols, type))' vorausgesetzt, du bist in C++ –

+0

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

Verwandte Themen