Bonjour,
Je developpe un programme qui doit sauvegarder 1000 images sur DD provenant des caméras JAi à une vitesse de 1000 images/s.
j'utilise cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
void CCamera::StreamCBFunc2(J_tIMAGE_INFO * pAqImageInfo)
{
 
 
 
    std::cout << index << " " << i << " " << std::endl;
    nbr_missing_packets+=pAqImageInfo->iMissingPackets;
 
 
    if (J_Image_Malloc(pAqImageInfo, &tCnvImageInfo) == J_ST_SUCCESS) {
    if (J_Image_FromRawToImage(pAqImageInfo, &tCnvImageInfo) == J_ST_SUCCESS) {
            std::ostringstream out;
            out << i++;
            std::string sFileName = filename + "\\photo" + out.str() + ".tiff";
 
    if (J_Image_SaveFile(&tCnvImageInfo, LPCTSTR(sFileName.c_str())) == J_ST_SUCCESS) {}
            if (J_Image_Free(&tCnvImageInfo) != J_ST_SUCCESS) {}
        }
    }
}
On convertit l'image brute qui se trouve dans pAqImageInfo en format image et on la stocke dans tCnvImageInfo et on la sauvegarde sur le disque. ça marche pour sauvegarder 10 images mais dès que j'enregidtre 1000 images par exemple la vitesse descend à 2 images/s
c'est la fonction J_Image_SaveFile qui ralentit la vitesse. je l'ai remplacée par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
void CCamera::StreamCBFunc3(J_tIMAGE_INFO * pAqImageInfo)
{
 
    FILE                *f;
 
 
 
    std::cout <<"cam"<< index << " " << i << " " << std::endl;
    nbr_missing_packets+=pAqImageInfo->iMissingPackets;
 
 
 
    std::ostringstream out;
    out << i++;
    std::string sFileName = filename + "\\photo" + out.str()+ ".jpg";
    f=fopen(sFileName.c_str(),"wb");
    if(f!=NULL)
    {
        fwrite(pAqImageInfo->pImageBuffer,sizeof(uint8_t),sizeof(&pAqImageInfo->pImageBuffer),f);
        fclose(f);
    }
 
    else
        TRACE("pas d'écriture!!\n");
 
 
}
mais ça marche pas.
Aidez moi svp!
Merci d'avance!