|
|
|
@ -5,7 +5,11 @@ |
|
|
|
|
#include <opencv2/imgproc.hpp> |
|
|
|
|
#include <opencv2/highgui.hpp> |
|
|
|
|
|
|
|
|
|
#ifdef CV_CXX11 |
|
|
|
|
#if defined(CV_CXX11) && defined(HAVE_THREADS) |
|
|
|
|
#define USE_THREADS 1 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef USE_THREADS |
|
|
|
|
#include <mutex> |
|
|
|
|
#include <thread> |
|
|
|
|
#include <queue> |
|
|
|
@ -51,7 +55,7 @@ void drawPred(int classId, float conf, int left, int top, int right, int bottom, |
|
|
|
|
|
|
|
|
|
void callback(int pos, void* userdata); |
|
|
|
|
|
|
|
|
|
#ifdef CV_CXX11 |
|
|
|
|
#ifdef USE_THREADS |
|
|
|
|
template <typename T> |
|
|
|
|
class QueueFPS : public std::queue<T> |
|
|
|
|
{ |
|
|
|
@ -101,7 +105,7 @@ private: |
|
|
|
|
TickMeter tm; |
|
|
|
|
std::mutex mutex; |
|
|
|
|
}; |
|
|
|
|
#endif // CV_CXX11
|
|
|
|
|
#endif // USE_THREADS
|
|
|
|
|
|
|
|
|
|
int main(int argc, char** argv) |
|
|
|
|
{ |
|
|
|
@ -166,7 +170,7 @@ int main(int argc, char** argv) |
|
|
|
|
else |
|
|
|
|
cap.open(parser.get<int>("device")); |
|
|
|
|
|
|
|
|
|
#ifdef CV_CXX11 |
|
|
|
|
#ifdef USE_THREADS |
|
|
|
|
bool process = true; |
|
|
|
|
|
|
|
|
|
// Frames capturing thread
|
|
|
|
@ -266,7 +270,7 @@ int main(int argc, char** argv) |
|
|
|
|
framesThread.join(); |
|
|
|
|
processingThread.join(); |
|
|
|
|
|
|
|
|
|
#else // CV_CXX11
|
|
|
|
|
#else // USE_THREADS
|
|
|
|
|
if (async) |
|
|
|
|
CV_Error(Error::StsNotImplemented, "Asynchronous forward is supported only with Inference Engine backend."); |
|
|
|
|
|
|
|
|
@ -297,7 +301,7 @@ int main(int argc, char** argv) |
|
|
|
|
|
|
|
|
|
imshow(kWinName, frame); |
|
|
|
|
} |
|
|
|
|
#endif // CV_CXX11
|
|
|
|
|
#endif // USE_THREADS
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|