Używam openCV i mam obiekt 95,1 mat typu CV_32F, który chciałbym napisać do pliku binarnego. Używam poniższego kodu, ale nie mogę rzucić 32F na typ char. Czy są jakieś sugestie? Chcę również wykonać odwrotną procedurę odczytywania pliku binarnego i zapisywania wartości do obiektu macie tego samego typu.Napisz cv :: Mat do plików binarnych?
try{
ofstream posBinary;
posBinary.open("C:/Users/Dr.Mollica/Documents/TSR Datasets/signDatabasePublicFramesOnly/posSamps.bin", ios::out | ios::binary);
posBinary.write((char *)featureVector, sizeof(featureVector);
}
catch (exception X){ cout << "Error! Could not write Binary file" << endl; }
również zauważyć, powodem chcę zrobić go w pliku binarnym to będę pisać dużą liczbę tych wektorów do pliku, który zostanie odczytany w celu algorytm uczenia maszynowego. Z mojego rozumienia, jak najszybsze jest czytanie i zapisywanie do pliku binarnego.
Z mojego rozumienia czytanie pisania za pomocą plików binarnych jest szybsze. Zamierzam wprowadzić dużą liczbę tych wektorów do algorytmu uczenia, więc chciałbym napisać i przeczytać je tak szybko, jak to możliwe. – pdm
@pdm Proponuję także użyć xml lub yml. To prawda, że używanie plików binarnych jest szybsze, ale xml lub yml jest wystarczająco szybki dla większości przypadków. Pamiętaj, aby nie testować szybkości w debugerze Visual Studio, użycie xml lub yml dla dużych plików w debugerze jest BARDZO BARDZO wolne. Jeśli uważasz, że xml lub yml jest zbyt duży, możesz użyć xml.gz lub yml.gz, a OpenCV automatycznie skompresuje plik. – delphifirst
Dziękuję Myślę, że będę trzymać się za pomocą pliku xml lub yml, ale dla przyszłego odniesienia będzie można podać przykład, jak można to zrobić z plikiem binarnym. Jeszcze raz dziękuję za szybkie odpowiedzi. – pdm