mirror of
https://github.com/opencv/opencv.git
synced 2025-07-20 19:17:36 +08:00
Merge remote-tracking branch 'upstream/3.4' into merge-3.4
This commit is contained in:
commit
2cef100303
@ -129,9 +129,9 @@ endif()
|
||||
|
||||
if(INF_ENGINE_TARGET)
|
||||
if(NOT INF_ENGINE_RELEASE)
|
||||
message(WARNING "InferenceEngine version has not been set, 2020.1 will be used by default. Set INF_ENGINE_RELEASE variable if you experience build errors.")
|
||||
message(WARNING "InferenceEngine version has not been set, 2020.2 will be used by default. Set INF_ENGINE_RELEASE variable if you experience build errors.")
|
||||
endif()
|
||||
set(INF_ENGINE_RELEASE "2020010000" CACHE STRING "Force IE version, should be in form YYYYAABBCC (e.g. 2020.1.0.2 -> 2020010002)")
|
||||
set(INF_ENGINE_RELEASE "2020020000" CACHE STRING "Force IE version, should be in form YYYYAABBCC (e.g. 2020.1.0.2 -> 2020010002)")
|
||||
set_target_properties(${INF_ENGINE_TARGET} PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "HAVE_INF_ENGINE=1;INF_ENGINE_RELEASE=${INF_ENGINE_RELEASE}"
|
||||
)
|
||||
|
@ -83,7 +83,7 @@ Let us define a kernel function \f$K(p,q)\f$ which does a dot product between tw
|
||||
\begin{aligned}
|
||||
K(p,q) = \phi(p).\phi(q) &= \phi(p)^T \phi(q) \\
|
||||
&= (p_{1}^2,p_{2}^2,\sqrt{2} p_1 p_2).(q_{1}^2,q_{2}^2,\sqrt{2} q_1 q_2) \\
|
||||
&= p_1 q_1 + p_2 q_2 + 2 p_1 q_1 p_2 q_2 \\
|
||||
&= p_{1}^2 q_{1}^2 + p_{2}^2 q_{2}^2 + 2 p_1 q_1 p_2 q_2 \\
|
||||
&= (p_1 q_1 + p_2 q_2)^2 \\
|
||||
\phi(p).\phi(q) &= (p.q)^2
|
||||
\end{aligned}
|
||||
|
@ -129,7 +129,13 @@ endif()
|
||||
|
||||
set(dnn_runtime_libs "")
|
||||
if(INF_ENGINE_TARGET)
|
||||
ocv_option(OPENCV_DNN_IE_NN_BUILDER_2019 "Build with Inference Engine NN Builder API support" ON) # future: NOT HAVE_NGRAPH
|
||||
set(use_nn_builder OFF)
|
||||
if(TARGET inference_engine_nn_builder OR # custom imported target
|
||||
TARGET IE::inference_engine_nn_builder OR # default imported target via InferenceEngineConfig.cmake
|
||||
INF_ENGINE_RELEASE VERSION_LESS "2020000000") # compatibility with older versions on IE
|
||||
set(use_nn_builder ON)
|
||||
endif()
|
||||
ocv_option(OPENCV_DNN_IE_NN_BUILDER_2019 "Build with Inference Engine NN Builder API support" ${use_nn_builder}) # future: NOT HAVE_NGRAPH
|
||||
if(OPENCV_DNN_IE_NN_BUILDER_2019)
|
||||
message(STATUS "DNN: Enabling Inference Engine NN Builder API support")
|
||||
add_definitions(-DHAVE_DNN_IE_NN_BUILDER_2019=1)
|
||||
|
@ -77,7 +77,11 @@ public:
|
||||
return type_info;
|
||||
}
|
||||
|
||||
#if INF_ENGINE_VER_MAJOR_GT(2020020000)
|
||||
NgraphCustomOp(const ngraph::OutputVector& inputs,
|
||||
#else
|
||||
NgraphCustomOp(const ngraph::NodeVector& inputs,
|
||||
#endif
|
||||
const std::map<std::string, InferenceEngine::Parameter>& params = {}):
|
||||
Op(inputs), params(params)
|
||||
{
|
||||
@ -103,7 +107,11 @@ public:
|
||||
|
||||
std::shared_ptr<ngraph::Node> copy_with_new_args(const ngraph::NodeVector& new_args) const override
|
||||
{
|
||||
#if INF_ENGINE_VER_MAJOR_GT(2020020000)
|
||||
return std::make_shared<NgraphCustomOp>(ngraph::as_output_vector(new_args), params);
|
||||
#else
|
||||
return std::make_shared<NgraphCustomOp>(new_args, params);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool visit_attributes(ngraph::AttributeVisitor& visitor) override
|
||||
@ -270,7 +278,11 @@ InfEngineNgraphNode::InfEngineNgraphNode(const std::vector<Ptr<BackendNode> >& n
|
||||
{"internals", shapesToStr(internals)}
|
||||
};
|
||||
|
||||
#if INF_ENGINE_VER_MAJOR_GT(2020020000)
|
||||
ngraph::OutputVector inp_nodes;
|
||||
#else
|
||||
ngraph::NodeVector inp_nodes;
|
||||
#endif
|
||||
for (const auto& node : nodes)
|
||||
inp_nodes.emplace_back(node.dynamicCast<InfEngineNgraphNode>()->node);
|
||||
node = std::make_shared<NgraphCustomOp>(inp_nodes, params);
|
||||
|
@ -147,7 +147,7 @@ public:
|
||||
const std::vector<Ptr<BackendNode> >& nodes) CV_OVERRIDE
|
||||
{
|
||||
auto& ieInpNode = nodes[0].dynamicCast<InfEngineNgraphNode>()->node;
|
||||
ngraph::NodeVector inp{ieInpNode};
|
||||
ngraph::OutputVector inp{ieInpNode};
|
||||
auto blank = std::make_shared<ngraph::op::Concat>(inp, 0);
|
||||
return Ptr<BackendNode>(new InfEngineNgraphNode(blank));
|
||||
}
|
||||
|
@ -358,7 +358,7 @@ public:
|
||||
std::vector<size_t> maxDims(numDims, 0);
|
||||
|
||||
CV_Assert(inputs.size() == nodes.size());
|
||||
ngraph::NodeVector inp_nodes;
|
||||
ngraph::OutputVector inp_nodes;
|
||||
for (int i = 0; i < nodes.size(); ++i)
|
||||
{
|
||||
inp_nodes.push_back(nodes[i].dynamicCast<InfEngineNgraphNode>()->node);
|
||||
|
@ -473,7 +473,7 @@ public:
|
||||
ieLayer.setRoundingType(ceilMode ?
|
||||
InferenceEngine::Builder::PoolingLayer::RoundingType::CEIL :
|
||||
InferenceEngine::Builder::PoolingLayer::RoundingType::FLOOR);
|
||||
ieLayer.setExcludePad(type == AVE && padMode == "SAME");
|
||||
ieLayer.setExcludePad(!avePoolPaddedArea);
|
||||
|
||||
InferenceEngine::Builder::Layer l = ieLayer;
|
||||
if (!padMode.empty())
|
||||
|
@ -24,10 +24,11 @@
|
||||
#define INF_ENGINE_RELEASE_2019R2 2019020000
|
||||
#define INF_ENGINE_RELEASE_2019R3 2019030000
|
||||
#define INF_ENGINE_RELEASE_2020_1 2020010000
|
||||
#define INF_ENGINE_RELEASE_2020_2 2020020000
|
||||
|
||||
#ifndef INF_ENGINE_RELEASE
|
||||
#warning("IE version have not been provided via command-line. Using 2019.1 by default")
|
||||
#define INF_ENGINE_RELEASE INF_ENGINE_RELEASE_2020_1
|
||||
#warning("IE version have not been provided via command-line. Using 2020.2 by default")
|
||||
#define INF_ENGINE_RELEASE INF_ENGINE_RELEASE_2020_2
|
||||
#endif
|
||||
|
||||
#define INF_ENGINE_VER_MAJOR_GT(ver) (((INF_ENGINE_RELEASE) / 10000) > ((ver) / 10000))
|
||||
@ -58,7 +59,9 @@
|
||||
|
||||
#include <inference_engine.hpp>
|
||||
|
||||
#ifdef HAVE_DNN_IE_NN_BUILDER_2019
|
||||
#include <ie_builders.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && INF_ENGINE_VER_MAJOR_LT(INF_ENGINE_RELEASE_2020_1)
|
||||
#pragma GCC visibility pop
|
||||
|
@ -32,7 +32,7 @@ static bool checkQRInputImage(InputArray img, Mat& gray)
|
||||
return false; // image data is not enough for providing reliable results
|
||||
}
|
||||
int incn = img.channels();
|
||||
CV_Check(incn, incn == 1 || incn == 3 || incn == 3, "");
|
||||
CV_Check(incn, incn == 1 || incn == 3 || incn == 4, "");
|
||||
if (incn == 3 || incn == 4)
|
||||
{
|
||||
cvtColor(img, gray, COLOR_BGR2GRAY);
|
||||
|
@ -1140,7 +1140,7 @@ void HOGDescriptorTester::compute(InputArray _img, vector<float>& descriptors,
|
||||
actual_hog->compute(img, actual_descriptors, winStride, padding, locations);
|
||||
|
||||
double diff_norm = cvtest::norm(actual_descriptors, descriptors, NORM_L2 + NORM_RELATIVE);
|
||||
const double eps = FLT_EPSILON * 100;
|
||||
const double eps = 2.0e-3;
|
||||
if (diff_norm > eps)
|
||||
{
|
||||
ts->printf(cvtest::TS::SUMMARY, "Norm of the difference: %lf\n", diff_norm);
|
||||
@ -1289,7 +1289,7 @@ void HOGDescriptorTester::computeGradient(InputArray _img, InputOutputArray _gra
|
||||
const char* args[] = { "Gradient's", "Qangles's" };
|
||||
actual_hog->computeGradient(img, actual_mats[0], actual_mats[1], paddingTL, paddingBR);
|
||||
|
||||
const double eps = FLT_EPSILON * 100;
|
||||
const double eps = 8.0e-3;
|
||||
for (i = 0; i < 2; ++i)
|
||||
{
|
||||
double diff_norm = cvtest::norm(actual_mats[i], reference_mats[i], NORM_L2 + NORM_RELATIVE);
|
||||
|
@ -430,9 +430,10 @@ class CppHeaderParser(object):
|
||||
# filter off some common prefixes, which are meaningless for Python wrappers.
|
||||
# note that we do not strip "static" prefix, which does matter;
|
||||
# it means class methods, not instance methods
|
||||
decl_str = self.batch_replace(decl_str, [("static inline", ""), ("inline", ""),\
|
||||
("CV_EXPORTS_W", ""), ("CV_EXPORTS", ""), ("CV_CDECL", ""), ("CV_WRAP ", " "), ("CV_INLINE", ""),
|
||||
("CV_DEPRECATED", ""), ("CV_DEPRECATED_EXTERNAL", "")]).strip()
|
||||
decl_str = self.batch_replace(decl_str, [("static inline", ""), ("inline", ""), ("explicit ", ""),
|
||||
("CV_EXPORTS_W", ""), ("CV_EXPORTS", ""), ("CV_CDECL", ""),
|
||||
("CV_WRAP ", " "), ("CV_INLINE", ""),
|
||||
("CV_DEPRECATED", ""), ("CV_DEPRECATED_EXTERNAL", "")]).strip()
|
||||
|
||||
|
||||
if decl_str.strip().startswith('virtual'):
|
||||
|
@ -35,10 +35,30 @@ public class VideoCaptureTest extends OpenCVTestCase {
|
||||
assertFalse(capture.isOpened());
|
||||
}
|
||||
|
||||
public void testVideoCapture() {
|
||||
public void testDefaultConstructor() {
|
||||
capture = new VideoCapture();
|
||||
assertNotNull(capture);
|
||||
assertFalse(capture.isOpened());
|
||||
}
|
||||
|
||||
public void testConstructorWithFilename() {
|
||||
capture = new VideoCapture("some_file.avi");
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorWithFilenameAndExplicitlySpecifiedAPI() {
|
||||
capture = new VideoCapture("some_file.avi", Videoio.CAP_ANY);
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorWithIndex() {
|
||||
capture = new VideoCapture(0);
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
public void testConstructorWithIndexAndExplicitlySpecifiedAPI() {
|
||||
capture = new VideoCapture(0, Videoio.CAP_ANY);
|
||||
assertNotNull(capture);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user