[G-API]: morphologyEx() Standard Kernel Implementation
* cv::gapi::morphologyEx() kernel
- implemented (without separate 3x3 version)
- tests added: check only different operations, not kernels/borders
* Address comments: add `const` where needed
* Replaced fundamental tyeps -> enums where needed
- added operator<< overload for cv::MorphTypes for tests output
The change is needed due to removing default opset namespace for Unsqueeze
in the scope of this refactoring activity: https://github.com/openvinotoolkit/openvino/pull/2767
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* G-API: Introduce ONNX backend for Inference
- Basic operations are implemented (Infer, -ROI, -List, -List2);
- Implemented automatic preprocessing for ONNX models;
- Test suite is extended with `OPENCV_GAPI_ONNX_MODEL_PATH` env for test data
(test data is an ONNX Model Zoo repo snapshot);
- Fixed kernel lookup logic in core G-API:
- Lookup NN kernels not in the default package, but in the associated
backend's aux package. Now two NN backends can work in the same graph.
- Added Infer SSD demo and a combined ONNX/IE demo;
* G-API/ONNX: Fix some of CMake issues
Co-authored-by: Pashchenkov, Maxim <maxim.pashchenkov@intel.com>
Expand ie::Params to support config
* Add config to IE params
* Add test
* Remove comments from tests
* Rename to pluginConfig
* Add one more overloads for pluginConfig
* Add more tests
Set queue size = 1 to Copy island right after the desync.
In this case, Copy won't read more data from a "last_written"
container than required, while feeding the desynchronized path.
Sometimes Copy don't get fused into an island and behaves
on its own -- in this case, it reads more data in advance
so the slow (desync) part actually processes some data in-sync
(more than actually required)
- cv::gapi::serialize bypasses compile arguments which have no S11N specialization with serialize/deserialize callbacks for underlying types
- cv::gapi::deserialize can accept arbitraty number of serialized compile args in a stream but will return only those which are requested by user via template parameter pack if they are presented in the stream. If some or all of them are not presented cv::gapi::deserialize will ignore and return only those which are presented
- cv::gapi::deserialize can accept only types which can be deserialized (have S11N<T> specialization with the user callbacks)
- Added cv::gapi::s11n::detail::has_S11N_spec<T> trait to separate compile arguments which have S11N<T> specialization with the user callbacks
- desync() is a new (and for now, the only one) intrinsic
which splits the graph execution into asynchronous parts
when running in Streaming mode;
- desync() makes no effect when compiling in Traditional mode;
- Added tests on desync() working in various scenarios;
- Extended GStreamingExecutor to support desync(); also extended
GStreamingCompiled() with a new version of pull() returning a
vector of optional values;
- Fixed various issues with storing the type information & proper
construction callbacks for GArray<> and GOpaque;
- Introduced a new infer(Roi,GMat) overload with a sample;
- Introduced an internal API for Islands to control fusion
procedure (to fuse or not to fuse);
- Introduced handleStopStream() callback for island executables;
- Added GCompileArgs to metadata of the graph (required for other
features).
- Changed descr_of(RMat) to use canDescribeHelper to correctly handle planar case
- Added export of createMat
- Added setting of Storage::INPUT and Storage::OUTPUT in deserialization routine of GComputation
Detection and decoding of curved QR-codes
* temp changes for curved qrcodes
* added api for curved qr code decoding
* fixed prototypes
* refactored curved qr code decoding
* refactored curved qr code decoding 2nd part
* refactored curved qr code decoding 3rd part
* refactored curved qr code decoding 4th part
* added tests for curved qr code decoding
* refactored curved qr code decoding 5th part
Add support for Swift version independence
* Build for distribution (Swift version independence) when new Xcode build system is available
* Add module map and set "Defines Modules" flag
* support similarity masks
* add test for similarity threshold
* short license in test
* use UMat in buildSimilarityMask
* fix win32 warnings
* fix test indentation
* fix umat/mat sync
* no in-place argument for erode/dilate
Fixes two errors when building with the options WITH_CUDA=ON and BUILD_CUDA_STUBS=ON on a machine without CUDA.
In the cudaarithm module, make sure cuda_runtime.h only gets included when CUDA is installed.
In the stitching module, don't assume that cuda is present just because cudaarithm and cudawarping are present (as is the case when building with the above options).
* add HEVC(H.265) codec to iOS,Mac VideoWriter
* Update cap_avfoundation_mac.mm
add CV_FOURCC('h','v','c','1') for HEVC codec
* Update cap_avfoundation.mm
add CV_FOURCC('h','v','c','1') for HEVC codec
* feat: add availability check for HEVC codec on iOS and OS X
Co-authored-by: Vadim Levin <vadim.levin@xperience.ai>
[GSoC] OpenCV.js: WASM SIMD optimization 2.0
* gsoc_2020_simd Add perf test for filter2d
* add perf test for kernel scharr and kernel gaussianBlur
* add perf test for blur, medianBlur, erode, dilate
* fix the errors for the opencv PR robot
fix the trailing whitespace.
* add perf tests for kernel remap, warpAffine, warpPersepective, pyrDown
* fix a bug in modules/js/perf/perf_imgproc/perf_remap.js
* add function smoothBorder in helpfun.js and remove replicated function in perf test of warpAffine and warpPrespective
* fix the trailing white space issues
* add OpenCV.js loader
* Implement the Loader with help of WebAssembly Feature Detection, remove trailing whitespaces
* modify the explantion for loader in js_setup.markdown and fix bug in loader.js
GAPI: Addition new Color conversion kernels to CPU backend.
* Add BGR2RGB kernel to CPU backend
* Add BGR2I420 and RGB2I420 kernels to CPU backend
* Add I4202BGR and I4202RGB kernels to CPU backend
[GAPI] RMat integration into the framework
* RMat integration
* Added initialization of input mat in GArray initialization tests
* Fixed klocwork warnings in RMat tests, changed argument order in EXPECT_EQ
A running GMainLoop processes many events on the GLib/GStreamer
world. While some things may work without it, many others wont.
Examples of these are signals, timers and many other source
events. The problem becomes more concerning by the fact that
some GStreamer elements rely on signals to work.
This commit allows the user to specify an OpenCV option to
start a main loop, if needed. Since the loop blocks, this is
done in a separate thread.
[G-API] Export a part of serialization interface
* Initial stub
* Add test on serialization of a custom type
* Namespaces rework
* Fix isSupported in test struct
* Fix clang build and rework namespaces
* Remove redundant header
[G-API]: countNonZero() Standard Kernel Implementation
* Add countNonZero() standard kernel
- API and documentation provided
- OCV backend supported
- accuracy and performance tests provided
- some refactoring of related documentation done
* Fix GOpaque functionality for OCL Backend
- test for OCL Opaque usage providied
* countNonZero for GPU
- OCL Backend implementation for countNonZero() added
- tests provided
* Addressing comments
[G-API] Add support for more types serialization
* Support more types
* Add std::string support
* Fix GOpaque and gin interaction
* Fix tests on kind
* Make map serialization support templates and add tests on kind
Update G-API slides to OpenCV 4.4
* G-API: Updated slides to v4.4 (+ sample)
* Slight formatting changes + Python API page
* Some more updates to slides:
- Added more info on 4.2 and 4.4 versions
- Added explanation on Operations and their functional wrappers
* G-API: Make GFrame a new (distinct) G-type, not an alias to GMat
- The underlying host type is still cv::Mat, a new cv::MediaFrame
type is to be added as a separate PR
* Fix warnings and review comments
- Somewhow there was a switch() without a default: clause in Fluid
[G-API]: Add Fluid bitwise operations implementation for (GMat, GScalar)
* Added Fluid `bitwise` with `Scalar` + acc.tests
- simple loop implementation for Fluid used (no `hal`);
- `Scalar` is casted to `int` in the beginning
- tests just modified to work with `Scalar`
- expected output in operators' tests fixed (operators can't change Mat's depth)
- `float` `Scalar` `RNG` added, `RNG` reworked (`time` is used now), initialization of test fixtures reworked
- if input or output is `float` Scalar is initialized by `float`
- some problems with Fluid/OCV floating-point comparison difference stashed by `AbsSimilarPoints()` usage, FIXME added
- divide-by-zero is now fixed differently and everywhere
* - Added perf_tests for bitwise_Scalar operations
- due to errors of Fluid floating-point comparison operations, added support of different validation in Cmp perf_tests; added FIXME
- reworked integral initialization of Scalar
* Addressing comments
- NULL -> nullptr
- Scalar convertion moved to the function
- avoid -> avoiding
* Addressing comments
* CV_assert -> GAPI_assert
* Addressed DM comments
- refactored convertScalarForBitwise()
- removed unnecessary braces for switch
* Changed the operators tests
- switch via `enum` implemented
- infrastructure for that refactored
[G-API]: Add four kernels to parse NN outputs & provide information in Streaming scenarios
* Kernels from GL "blue" branch, acc and perf tests
* Code cleanup
* Output fix
* Comment fix
* Added new file for parsers, stylistic corrections
* Added end line
* Namespace fix
* Code cleanup
* nnparsers.hpp moved to gapi/infer/, nnparsers -> parsers
* Removed cv:: from parsers.hpp
[G-API]: Add GArray initialization support
* Added GArray initialization (CONST_VALUE, GScalar analog) and test for this
* Whitespaces
* And one more space
* Trailing whitespace
* Test name changed. Build with magic commands.
* GArray works with rvalue initialization
* Code cleanup
* Ternary operator in the initialization list.
Fix loading of ONNX models with Resize operation with Opset 11 for newer versions of Pytorch
* Add reproducer for Resize operation from newer versions of Pytorch
* Fix loading of scales parameter for Resize layer
* Change check type for better diagnostic messages
Fix KD Tree kNN Implementation
* Make KDTree mode in kNN functional
remove docs and revert change
Make KDTree mode in kNN functional
spacing
Make KDTree mode in kNN functional
fix window compilations warnings
Make KDTree mode in kNN functional
fix window compilations warnings
Make KDTree mode in kNN functional
casting
Make KDTree mode in kNN functional
formatting
Make KDTree mode in kNN functional
* test coding style
[G-API]: Relocation of operators' overloads
* Relocates overloaded operators for `cv::GMat` and `cv::GScalar` to `cv::` namespace
- adds test to check usage of operators compilation
* Add tests for all the operators
* Address comments
Bit exact gaussian blur for 16bit unsigned int
* bit-exact gaussian kernel for CV_16U
* SIMD optimization
* template GaussianBlurFixedPoint
* remove template specialization
* simd support for h3N121 uint16
* test for u16 gaussian blur
* remove unnecessary comments
* fix return type of raw()
* add typedef of native internal type in fixedpoint
* update return type of raw()
Bit-exact Nearest Neighbor Resizing
* bit exact resizeNN
* change the value of method enum
* add bitexact-nn to ResizeExactTest
* test to compare with non-exact version
* add perf for bit-exact resizenn
* use cvFloor-equivalent
* 1/3 scaling is not stable for floating calculation
* stricter test
* bugfix: broken data in case of 6 or 12bytes elements
* bugfix: broken data in default pix_size
* stricter threshold
* use raw() for floor
* use double instead of int
* follow code reviews
* fewer cases in perf test
* center pixel convention
* Fix ONNX loading in issues opencv#17516, opencv#17531
* Add tests for Linear and Matmul layers
* Disable tests for IE versions lower than 20.4
* Skip unstable tests with OpenCL FP16 on Intel GPU
* Add correct test filtering for OpenCL FP16 tests
Remove obsolete FFMPEG versions support
* refactor: removed obsolete FFMPEG version support
- Oldest available version via official FFMPEG repository mirror has tag v.0.5
LIBAVFORMAT version for this tag is 52.31.0
* refactor: prefer std::min function to MIN macro
* refactor: use appropriate macro instead of manual version calculation
* refactor: remove macros for versions prior 0.5.15 release
* refactor: remove libavcodec macros for versions < 54.35.1 (default to Ubuntu 14.04)
* refactor: remove libavformat macro for versions < 54.20.4 (default ubuntu 14.04)
* refactor: remove libavutil macro for versions < 52.3.0 (default ubuntu 14.04)
* refactor: remove missed macros for libavcodec and libavformat
* refactor: remove unused _opencv_ffmpeg_free function
* build: add FFMPEG libraries versions checks
- Add verbose message about what FFMPEG libraries are missing.
- Add minimal versions check set to libav 9.20 release (default ubuntu 14.04) and FFMPEG 1.1.16 release.
If the check is failed CMake produces user-friendly message instead of build error.
* fix: libavcodec version guard for AVDISCARD_NONINTRA
* fix: libav check of libavcodec version guard for AVDISCARD_NONINTRA
* fix: version check for AV_CODEC_FLAG_GLOBAL_HEADER
* fix: missing FFMPEG libraries output
[G-API]: Fluid Core kernels performance tests
* Add performance tests for a list of Fluid Core kernels
* Update gapi_core_perf_tests_fluid.cpp
Addressing a comment
- OpenCL kernel cleanup processing is asynchronous and can be called even after forced clFinish()
- buffers are released later in asynchronous mode
- silence these false positive cases for asynchronous cleanup
reformatting
Improve initialization performance of Brisk
fix formatting
Improve initialization performance of Brisk
formatting
Improve initialization performance of Brisk
make a lookup table for ring
use cosine/sine lookup table for theta in brisk and utilize trig identity
fix ring lookup table
use cosine/sine lookup table for theta in brisk and utilize trig identity
formatting
use cosine/sine lookup table for theta in brisk and utilize trig identity
move scale radius product to ring loop to ensure it's not recomputed for each rot
revert change
move scale radius product to ring loop to ensure it's not recomputed for each rot
remove rings lookup table
move scale radius product to ring loop to ensure it's not recomputed for each rot
fix formatting of for loop
move scale radius product to ring loop to ensure it's not recomputed for each rot
use sine/cosine approximations for brisk lookup table.
add documentation for sine/cosine lookup tables
Improve initialization performance of BRISK
changed OpenCV license from BSD to Apache 2 license
* as discussed and announced earlier, changed OpenCV license from BSD to Apache 2. Many files still contain old-style copyrights though
* changed wording a bit; preserve the original OpenCV BSD license
* 8-bit SIFT descriptors
* use clearer parameter
* update docs
* propagate type info
* overload function for avoiding ABI-break
* bugfix: some values are undefined when CV_SIMD is absent
revise default proto to match the filename in documentations
fix a bug
beautify python codes
fix bug
beautify codes
add test samples with larger/smaller size
remove unless code
using bytearray without creating tmp file
remove useless codes