Je développe actuellement un stimuli pour le cortex visuel du cerveau dans le cadre d'un projet universitaire. Le programme doit (de préférence) être écrit en C++, en utilisant Visual Studio et OpenCV. La façon dont il est censé fonctionner est que le programme crée un certain nombre de threads, en fonction de la quantité de fréquences différentes, chacune exécutant une minuterie pour leur fréquence respective. Le code ressemble à ceci jusqu'à présent:Commutation d'une image à des fréquences spécifiques C++
void timerThread(void *param) {
t *args = (t*)param;
int id = args->data1;
float freq = args->data2;
unsigned long period = round((double)1000/(double)freq)-1;
while (true) {
Sleep(period);
show[id] = 1;
Sleep(period);
show[id] = 0;
}
}
Il semble fonctionner très bien pour certaines des fréquences, mais d'autres varient beaucoup dans le taux de trame. J'ai essayé de créer ma propre fonction de synchronisation, similaire à celle de la fonction "blinkWithoutDelay" d'Arduino, même si cela a très mal fonctionné. En outre, j'ai essayé avec la fonction waitKey(), cela a fonctionné tout comme la fonction Sleep() utilisée maintenant.
Toute aide serait grandement appréciée!
Le code que vous fournissez est insuffisant pour décrire le problème: quel est ce spectacle ' [id] 'utilisé pour? – Antonio
Et pour quelles sortes de fréquences cela fonctionne-t-il bien, et quelles fréquences ont des problèmes? Et quels sont vos taux de trame bons et mauvais? Et quel type est 'show'? – Useless
'(double) 1000/(double) freq' ==>' 1000.0/freq' –