В моем проекте я использую opencv, чтобы ловить кадры с веб-камеры и обнаруживать некоторые вещи с помощью некоторых функций.Проблема в том, что в детерминированной функции необязательно перехватывать все кадры, например, было бы достаточно брать кадр каждые 0,5 секунды, а если время не закончилось, цикл переходит к следующей функции.Идея в коде была бы такой:
while(true){
//read(frame)
//cvtColor(....)
// and other things
time = 0;// start time
if (time == 0.5){
determinatefunction(frame, ...)
}else {
continue;
}
//some others functions
}
Я попытался сделать что-то похожее на приведенное выше с библиотекой хронографа:
// steady_clock example
#include <iostream>
#include <ctime>
#include <ratio>
#include <chrono>
using namespace std;
void foo(){
cout << "printing out 1000 stars...\n";
for (int i=0; i<1000; ++i) cout << "*";
cout << endl;
}
int main ()
{
using namespace std::chrono;
steady_clock::time_point t1 = steady_clock::now();
int i = 0;
while(i <= 100){
cout << "Principio del bucle" << endl;
steady_clock::time_point t2 = steady_clock::now();
duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
cout << time_span.count() << endl;
if (time_span.count() == 0.1){
foo();
steady_clock::time_point t1 = steady_clock::now();
}else {
continue;
}
cout << "fin del bucle" << endl;
i++;
}
}
Но цикл никогда не заканчивается и никогда не запускается foo ()function.
Я не могу использовать поток posix (я видел функцию sleep_for), потому что я использую g ++ (x86_64-win32-sjlj-rev4, созданный проектом MinGW-W64) 4.9.2 и его работыс opencv 2.4.9.Я пытаюсь реализовать Mingw Posix с OpenCV, но это дает мне ошибки, которые не имеют смысла, такие как 'VideoCapture' was not declared in this scope VideoCapture cap(0)
, когда include и библиотеки написаны правильно.
Я использую Windows 7.