我尝试做一个 Mat 图像元素队列,但 Visual C++ 给我一个关于队列“tipe”的错误。
我想要一个 OpenCV Mat 图像的并发队列,以便与多个线程一起使用。
我怎样才能做到这一点?
这是队列的代码给我错误(创建关于一个例子见这个论坛):
template<data Mat>
class coda_concorr
{
private:
std::queue<Mat> la_coda;
HANDLE mutex;
public:
void push(Mat const& data)
{
WaitForSingleObject(mutex,INFINITE):
la_coda.push(data);
RelaseMutex(mutex);
}
bool vuota() const
{
WaitForSingleObject(mutex,INFINITE);
return la_coda.empty();
ReleaseMutex(mutex);
}
bool try_pop(Mat& popped)
{
WaitForSingleObject(mutex,INFINITE);
if (la_coda.empty())
{
return false;
}
popped = la_coda.front();
la_coda.pop();
return true;
}
void aspetta_per_pop(Mat& popped)
{
WaitForSingleObject(mutex,INFINITE);
while (la_coda.empty())
{
WaitForSingleObject(mutex,INFINITE);
}
popped=la_coda.front();
la_coda.pop();
}
};
我使用 Visual Studio 2010 和 OpenCV 2.4.4