mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 08:13:04 +04:00
Merge pull request #13694 from dkurt:dnn_ie_async
Asynchronous API from Intel's Inference Engine (#13694) * Add forwardAsync for asynchronous mode from Intel's Inference Engine * Python test for forwardAsync * Replace Future_Mat to AsyncMat * Shadow AsyncMat * Isolate InferRequest callback * Manage exceptions in Async API of IE
This commit is contained in:
committed by
Alexander Alekhin
parent
3abae3c511
commit
a5c92c2029
@@ -2,7 +2,13 @@
|
||||
typedef dnn::DictValue LayerId;
|
||||
typedef std::vector<dnn::MatShape> vector_MatShape;
|
||||
typedef std::vector<std::vector<dnn::MatShape> > vector_vector_MatShape;
|
||||
|
||||
#ifdef CV_CXX11
|
||||
typedef std::chrono::milliseconds chrono_milliseconds;
|
||||
typedef std::future_status AsyncMatStatus;
|
||||
#else
|
||||
typedef size_t chrono_milliseconds;
|
||||
typedef size_t AsyncMatStatus;
|
||||
#endif
|
||||
|
||||
template<>
|
||||
bool pyopencv_to(PyObject *o, dnn::DictValue &dv, const char *name)
|
||||
@@ -40,6 +46,46 @@ bool pyopencv_to(PyObject *o, std::vector<Mat> &blobs, const char *name) //requi
|
||||
return pyopencvVecConverter<Mat>::to(o, blobs, ArgInfo(name, false));
|
||||
}
|
||||
|
||||
#ifdef CV_CXX11
|
||||
|
||||
template<>
|
||||
PyObject* pyopencv_from(const std::future<Mat>& f_)
|
||||
{
|
||||
std::future<Mat>& f = const_cast<std::future<Mat>&>(f_);
|
||||
Ptr<cv::dnn::AsyncMat> p(new std::future<Mat>(std::move(f)));
|
||||
return pyopencv_from(p);
|
||||
}
|
||||
|
||||
template<>
|
||||
PyObject* pyopencv_from(const std::future_status& status)
|
||||
{
|
||||
return pyopencv_from((int)status);
|
||||
}
|
||||
|
||||
template<>
|
||||
bool pyopencv_to(PyObject* src, std::chrono::milliseconds& dst, const char* name)
|
||||
{
|
||||
size_t millis = 0;
|
||||
if (pyopencv_to(src, millis, name))
|
||||
{
|
||||
dst = std::chrono::milliseconds(millis);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
template<>
|
||||
PyObject* pyopencv_from(const cv::dnn::AsyncMat&)
|
||||
{
|
||||
CV_Error(Error::StsNotImplemented, "C++11 is required.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif // CV_CXX11
|
||||
|
||||
template<typename T>
|
||||
PyObject* pyopencv_from(const dnn::DictValue &dv)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user