Problème de vitesse d'écriture sur disque dur
azza85
Messages postés
2
Statut
Membre
-
azza85 Messages postés 2 Statut Membre -
azza85 Messages postés 2 Statut Membre -
Bonjour,
J'ai un problème de vitesse de sauvegarde des images sur DD. En effet, je dois sauvegarder des images qui proviennent des caméras JAI et les écrire sur le disque à une vitesse de 10 image/s.
Au début, j'utilise cette fonction (code en c++):
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 qui est dans pAqImageInfo sous forme binaire puis on fait la conversion du format binaire au format image et ensuite on sauvegarde l'image convertie. ça marche pour sauvegarder 10 image à 10 Hz mais dès que je veux sauvegarder 1000 images par exemple la vitesse descend à 2 images/s!
C'est la fonction d'écriture sur DD (J_Image_SaveFile) qui pose problème.
Je l'ai remplacée par cette fonction:
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 à trouver la solution svp
Merci d'avance!
J'ai un problème de vitesse de sauvegarde des images sur DD. En effet, je dois sauvegarder des images qui proviennent des caméras JAI et les écrire sur le disque à une vitesse de 10 image/s.
Au début, j'utilise cette fonction (code en c++):
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 qui est dans pAqImageInfo sous forme binaire puis on fait la conversion du format binaire au format image et ensuite on sauvegarde l'image convertie. ça marche pour sauvegarder 10 image à 10 Hz mais dès que je veux sauvegarder 1000 images par exemple la vitesse descend à 2 images/s!
C'est la fonction d'écriture sur DD (J_Image_SaveFile) qui pose problème.
Je l'ai remplacée par cette fonction:
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 à trouver la solution svp
Merci d'avance!
A voir également:
- Problème de vitesse d'écriture sur disque dur
- Cloner disque dur - Guide
- Defragmenter disque dur - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Chkdsk disque dur externe - Guide
- Test vitesse disque dur - Guide