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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| void camera::run()
{
QPixmap imPix(resX, resY);
QImage image(resX, resY, QImage::Format_RGB16);
QImage imageC(resX, resY, QImage::Format_ARGB32_Premultiplied);
status = 20072;
long first, last, pMin, pMax;
while (status == 20072)
{
erreur = WaitForAcquisitionByHandle(handle);
mutex->lock();
SetCurrentCamera(handle);
//récupération des données de l'image : imdata[resX*reY]
erreur = GetMostRecentImage16(imData, resX*resY);
mutex->unlock();
if (erreur == 20002)
{
if (nbIm%50 == 0 || nbIm == 1)
{
normHisto (imData, resX, resY, &pMin, &pMax);
}
for (int j = 0 ; j<resY ; ++j )
{
for (int i = 0; i<resX ; ++i)
{
value = imData[j*resX+i];
value = 255*(value-pMin);
value = value/(pMax-pMin);
//image noir et blanc
image.setPixel(i, j, qRgb(value, value, value));
//selon la camera (identity) l'image est soit rouge soit bleu
if (identity == 0)
{
imageC.setPixel(i, j, qRgb(value, 0, 0));
}
else
{
imageC.setPixel(i, j, qRgb(0, value, 0));
}
}
}
imPix = QPixmap::fromImage(image);
emit hotImage (imPix);
if (mergeOn == true)
{
//émission de l'image de couleur
emit hotImageC (imageC, identity);
}
}
mutex->lock();
SetCurrentCamera(handle);
GetStatus(&status);
mutex->unlock();
}
}
} |
Partager