OpenCV speichert CV_32FC1-Bilder

Ein Programm, das ich verwende, liest einige Bitmaps und erwartet 32FC1-Bilder.

Ich versuche, diese Bilder zu erstellen

cv::Mat M1(255, 255, CV_32FC1, cv::Scalar(0,0,0));
cv::imwrite( "my_bitmap.bmp", M1 );

aber wenn ich die Tiefe überprüfe - es ist immer CV_8U

Wie kann ich die Dateien erstellen, damit sie die richtigen Informationen enthalten?

Aktualisieren: Es macht keinen Unterschied, ob ich eine andere Dateierweiterung verwende - z. tif oder png

Ich lese es - mit Code, der bereits implementiert ist - mitcvLoadImage.

Ich versuche, die Dateien zu ERSTELLEN, die der vorhandene Code - der den Bildtyp überprüft - verwenden kann.

Ich kann keine Dateien im vorhandenen Code konvertieren. Der vorhandene Code versucht nicht, einen zufälligen Bildtyp zu lesen und ihn in den gewünschten Typ zu konvertieren, sondern überprüft, ob die Dateien den benötigten Typ haben.

Ich habe herausgefunden - danke für die Antworten -, dass cv :: imwrite nur ganzzahlige Bilder schreibt.

Gibt es eine andere Möglichkeit - entweder OpenCV oder etwas anderes - die Bilder so zu schreiben, dass ich den Typ CV_32F erhalte?

Erneut aktualisieren: Der Code zum Lesen von Bildern ... wenn in einem cv :: Mat:

cv::Mat x = cv::imread(x_files, CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);

Der vorhandene Code:

IplImage *I = cvLoadImage(x_files.c_str(), CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);

Antworten auf die Frage(2)

Ihre Antwort auf die Frage