Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mempercepatkan Memuatkan Objek Mat Besar dalam OpenCV?
Memuatkan Objek Mat Besar yang Lebih Pantas ke dalam Memori dalam OpenCV
Manakala kaedah FileStorage dalam OpenCV menyediakan cara yang mudah untuk menyimpan dan mengambil objek Mat , ia mungkin bukan pilihan yang paling cekap untuk memuatkan objek Mat yang besar ke dalam ingatan. Berikut ialah beberapa pendekatan alternatif yang boleh menawarkan peningkatan kelajuan yang ketara:
Format Fail Perduaan
Menyimpan dan memuatkan objek Mat dalam format binari ialah penggalak prestasi yang ketara. Fungsi matwrite dan matread OpenCV memudahkan proses ini. Menggunakan fail binari mengelakkan overhed yang dikaitkan dengan prosedur bersiri dan penyahsirian OpenCV, menghasilkan masa pemuatan yang lebih cepat.
Hasil Ujian
Perbandingan masa muat antara FileStorage dan format binari untuk kedua-dua imej kecil dan besar:
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)
Kod Contoh
Berikut ialah coretan kod yang menunjukkan cara menggunakan matwrite dan matread:
#include <opencv2/opencv.hpp> #include <iostream> #include <fstream> 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"); }
Petua untuk Memuatkan Lebih Cepat
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mempercepatkan Memuatkan Objek Mat Besar dalam OpenCV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!