私は現在、大学のプロジェクトの一部として脳の視覚野の刺激プロバイダーを開発中です。このプログラムは、Visual StudioとOpenCVを利用して、C++で(できれば)作成することが望ましいです。動作するはずの方法は、プログラムがそれぞれの頻度のタイマーを実行する、異なる周波数の量に応じていくつかのスレッドを作成することです。 コードは、これまでに次のようになります。特定の周波数で画像を切り替える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' –