"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como acelerar o carregamento de objetos grandes no OpenCV?

Como acelerar o carregamento de objetos grandes no OpenCV?

Postado em 2025-04-18
Navegar:675

How Can I Speed Up Loading Large Mat Objects in OpenCV?

carregamento mais rápido de objetos de tanta grandes na memória no OpenCV

Embora o método FileStorage no OpenCV forneça uma maneira conveniente de armazenar e recuperar objetos mataginos Aqui estão várias abordagens alternativas que podem oferecer melhorias significativas de velocidade:

Bininary File Format

salvar e carregar objetos MAT em formato binário é um impulsionador substancial de desempenho. As funções Matwrite e Matread da OpenCV facilitam esse processo. O uso de arquivos binários evita a sobrecarga associada aos procedimentos de serialização e mereialização do OpenCV, resultando em tempos de carregamento muito mais rápidos. Usando Raw: 50.0879 ms (imagem pequena) Usando o FileStorage: (fora da memória) (imagem grande) Usando Raw: 197.381 ms (grande imagem)

Exemplo de código

aqui está um snippet de código demonstrando como usar matwrite e 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)

Tipas para carregamento mais rápido

#include 
#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");
}
medições de desempenho nunca devem ser realizadas no modo de depuração, pois o código de rebotão significativamente o código Execution. [&&&H. Não esgotar a memória disponível, especialmente ao lidar com objetos de tapete grandes.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3