我目前正在開發大腦視覺皮層的刺激提供者,作爲大學項目的一部分。該程序將(最好)用C++編寫,利用visual studio和OpenCV。它應該工作的方式是程序創建了多個線程,相應的不同頻率的數量,每個線程都運行一個定時器來滿足它們各自的頻率。 的代碼看起來像這樣至今:以特定頻率切換圖像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;
}
}
這似乎對某些頻率的工作不錯,但其他人有很大不同了很多的幀速率。我嘗試着研究創建自己的定時功能,類似於Arduino的「blinkWithoutDelay」功能,儘管這非常糟糕。另外,我已經嘗試過使用waitKey()函數,這很像現在使用的Sleep()函數。
任何幫助將不勝感激!
您所提供的代碼是不足以說明問題:這是什麼'秀[id]'用於? – Antonio
什麼樣的頻率能夠很好地工作,哪些頻率有問題?你的好壞是什麼? 「show」是什麼類型? – Useless
'(double)1000 /(double)freq' ==>'1000.0/freq' –