OpenCV에서 대형 Mat 개체를 메모리로 더 빠르게 로드
OpenCV의 FileStorage 메서드는 Mat 개체를 저장하고 검색하는 편리한 방법을 제공합니다. , 이는 대형 Mat 객체를 메모리에 로드하는 데 가장 효율적인 옵션이 아닐 수 있습니다. 다음은 상당한 속도 향상을 제공할 수 있는 몇 가지 대체 접근 방식입니다.
바이너리 파일 형식
Mat 개체를 바이너리 형식으로 저장하고 로드하면 상당한 성능 향상이 가능합니다. OpenCV의 matwrite 및 matread 기능은 이 프로세스를 용이하게 합니다. 바이너리 파일을 사용하면 OpenCV의 직렬화 및 역직렬화 절차와 관련된 오버헤드가 방지되므로 로딩 시간이 훨씬 빨라집니다.
테스트 결과
FileStorage와 바이너리 형식 간의 로드 시간 비교 작은 이미지와 큰 이미지 모두:
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)
코드 예
다음은 matwrite 및 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"); }
더 빠른 로딩을 위한 팁
위 내용은 OpenCV에서 대형 매트 개체의 로드 속도를 어떻게 높일 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!