Chargement plus rapide de grands objets de mat dans la mémoire dans OpenCv
Bien que la méthode FileStorage dans OpenCV fournit un moyen pratique de stocker et de récupérer MAT, il peut ne pas être l'option la plus efficace pour charger de grands objets matériaux dans la mémoire. Voici plusieurs approches alternatives qui peuvent offrir des améliorations de vitesse significatives:
Format de fichiers binaires
Enregistrer et charger des objets de tapis au format binaire est un booster de performance substantiel. Les fonctions MATWrite et Matrel d'OpenCV facilitent ce processus. L'utilisation de fichiers binaires évite les frais généraux associés aux procédures de sérialisation et de désérialisation d'OpenCV, ce qui entraîne des temps de chargement beaucoup plus rapides. Utilisation de bruts: 50.0879 ms (petite image) Utilisation de FileStorage: (hors mémoire) (grande image) Utilisation de RAW: 197.381 MS (grande image)
Exemple de code
Voici un extrait de code démontrant comment utiliser MatWrite et Matread:
Using FileStorage: 5523.45 ms (small image) Using Raw: 50.0879 ms (small image) Using FileStorage: (out of memory) (large image) Using Raw: 197.381 ms (large image)
conseils pour le chargement plus rapide
#includeLes mesures de performances ne doivent jamais être effectuées en mode debug, car cela ralentit significativement l'exécution du code. n'épuisez pas la mémoire disponible, surtout lorsque vous traitez de grands objets de mat.#include #include void matwrite(const std::string& filename, const cv::Mat& mat) { // Save Mat object to a binary file } cv::Mat matread(const std::string& filename) { // Load Mat object from a binary file } int main() { // Generate random data cv::Mat m = cv::Mat::randu(1024*256, 192, CV_8UC1); // Save to files matwrite("fs.yml", m); matwrite("raw.bin", m); // Load from files cv::Mat m1 = matread("fs.yml"); cv::Mat m2 = matread("raw.bin"); }
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3