Bon, là je ne sais pas quoi faire ! 
Je vous montre le code, vous aurez peut-être une explication à me donner. De mon côté, je vais essayer d'être le plus explicite possible sur mon code.
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 29
|
void Camera_IR_Bi_Visee::importImage(int numero_image)
{
m_numero_image = numero_image; // On met à jour le numéro de la dernière image regardée
std::vector<unsigned short> image(77120); //image vide que l'on passe en paramètre de la routine serveur IRImage
unsigned short* image_ptr = &image[0]; // pointeur sur cette image
//cas de la première image
if (m_numero_image == 0)
{
m_image = vigra::UInt16Image(m_image_width, m_image_height);
m_image.init(0);
}
else
{
int cr;
{
std::cout << m_numero_image << std::endl; // ligne qui fait marcher le programme ! :-(
boost::mutex::scoped_lock scoped_lock(serveur_mutex); //pour éviter plusieurs appels serveurs de différents threads
cr = IRimages(getChocNum(), m_numero_camera, m_numero_image, m_numero_image, &image_ptr); //APPEL SERVEUR -> on va chercher l'image n° 'm_numero_image'
// pour la stocker dans l'image 'image' (le vector du début)
}
// c'est ici que l'exception est levée : cr ne vaut pas 0
vigra_precondition(cr == 0, "Erreur de communication avec le serveur");
convertionDLTemperature(m_image);// Conversion de DL en température
}
} |
Mon programme fait une itération sur un film entier comportant 5500 images.
Le code plante vers l'image 4500, pas sur mon PC, mais sur celui de ma collègue...
Si je rajoute le
std::cout << m_numero_image ;
ce code ne plante plus... C'est tout de même extraordinaire non? 
Il doit y avoir une logique, mais je ne la vois pas... 
Surtout, si vous avez une idée, je vous écoute...
Partager