2016-04-24 3 views
3

Angenommen, ich möchte einen Mat als float verwenden. Der folgende Code kann ohne Fehler kompiliert werden. Aber ist das sicher?Ist es sicher, eine Matte in einen anderen Typ umzuwandeln?

Mat im = imread('test.jpg', CV_LOAD_IMAGE_GRAYSCALE); 
im.convertTo(im, CV_32F1); 

Ich möchte dies tun, weil sie kompakter geschrieben, sonst muss ich eine temporäre Mat erstellen.

Die documentation von Mat::convertTo() gibt nicht viele Informationen über die Speichernutzung der Funktion.

+0

Wenn Dokumentation nicht genug ist, konsultieren Sie den Quellcode. – Drop

+0

sollte in Ordnung sein, aber bedenken Sie, dass es effizienter sein kann, wenn Sie ein zweites Bild verwenden (wenn Sie mehrere Bilder verarbeiten und nicht ständig neuen Speicher reservieren/freigeben wollen) – Micka

Antwort

1

Mat :: convertTo-Funktion sollte sicher zu verwenden sein, wenn Inplace-Aufrufe (d. H. Gleiche Eingabe- und Ausgabe-Mat-Objekte) verwendet werden.

According to OpenCV DevZone, diese Funktion hatte einen Fehler bei Inplace-Anrufen, aber es wurde vor ein paar Jahren behoben.

Verwandte Themen