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:
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
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) {} } } }
c'est la fonction J_Image_SaveFile qui ralentit la vitesse. je l'ai remplacée par:
mais ça marche pas.
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"); }
Aidez moi svp!
Merci d'avance!
Partager