G-API: Unification of own:: Scalar with cv:: Scalar
* cvdefs.hpp
* Small changes
* Deowned Scalar. Does't work
* Something
* Removed to_ocv for Scalar
* Clear code
* Deleted whitespaces
* Added include<..own/scalar.hpp in cvdefs.hpp.
* Long string split on two now
* Comment about scalar
* Comment about crutch
* Removed second varible in scalar_wrapper
* Changed wrapper for scalar, alignment
* Alignment
* Whitespaces
* Removed scalar_wrapper
Jpeg2000 OpenJPEG port
* OpenJPEG based JPEG2000 decoder implementation
Currently, the following input color spaces and depth conversions are
supported:
- 8 bit -> 8 bit
- 16 bit -> 16 bit (IMREAD_UNCHANGED, IMREAD_ANYDEPTH)
- RGB(a) -> BGR
- RGBA -> BGRA (IMREAD_UNCHANGED)
- Y(a) -> Y(a) (IMREAD_ANYCOLOR, IMREAD_GRAY, IMREAD_UNCHANGED))
- YCC -> Y (IMREAD_GRAY)
* Check for OpenJPEG availability
This enables OpenJPEG based JPEG2000 imread support by default, which
can be disabled by -DWITH_OPENJPEG=OFF. In case OpenJPEG is enabled
and found, any checks for Jasper are skipped.
* Implement precision downscaling for precision > 8 without IMREAD_UNCHANGED
With IMREAD_UNCHANGED, values are kept from the input image, without it
components are downscaled to CV_8U range.
* Enable Jpeg2K tests when OpenJPEG is available
* Add support for some more color conversions
Support IMREAD_GRAY when input color space is RGB or unspecified.
Support YUV input color space for BGR output.
* fix: problems with unmanaged memory
* fix: CMake warning - HAVE_OPENJPEG is undefined
Removed trailing whitespaces
* fix: CMake find_package OpenJPEG add minimal version
* Basic JPEG2K encoder
Images with depth CV_8U and CV_16U are supported, with 1 to 4 channels.
* feature: Improved code for OpenJPEG2000 encoder/decoder
- Removed code duplication
- Added error handlers
- Extracted functions
* feature: Update conversion openjpeg array from/to Mat
* feature: Extend ChannelsIterator to fulfill RandomAccessIterator named requirements
- Removed channels split in copyFromMatImpl. With ChannelsIterator no allocations are performed.
- Split whole loop into 2 parts in copyToMat -> where std::copy and std::transforms are called.
* fix: Applied review comments.
- Changed `nullptr` in CV_LOG* functions to `NULL`
- Added `falls through` comment in decoder color space `switch`
- Added warning about unsupported parameters for the encoder
* feature: Added decode from in-memory buffers.
Co-authored-by: Vadim Levin <vadim.levin@xperience.ai>
* Add android support for tengine
* modify tengine download use commit id
* Del some invalid log in Tengine
* Test. default enable tengine
* ndk version judegment
* Close test . set Tengine default OFF
* Logic problem
* test .Android NDK judgement .
* Cmake error modify.
* cmake: cleanup tengine scripts
* cmake: use tengine target name
* cmake: disable testing of BUILD_ANDROID_PROJECTS=OFF
* Close test .
the float variant was always shadowed by the int version as
Rect2d is implicitly convertible to Rect.
This swaps things which is fine, as the vector of boxes was always
copied and the computation was done in double.
Added DaSiamRPN tracker
* added DaSiamRPN tracker
* whitespace trouble handled
* Fixes for PR
* Fixes for PR
* Fixes for PR
* added new line in the end of the file and x_crop fix
* removed cxy_wh_2_rect function
* removed loop from sofrmax function
* more detailed discription about absolute paths to onnx models
* removed nested while loop, initialization moved from main tracking loop
* added assert message for small init bb
* initial bounding box on videostream
* selection of initial bounding box improved
* created tracker class, fixed initializing bounding box
* fix round of value
* names fix
* private methods renamed
* names fixed, case for video WIP
* fix case with video
* removed hardcoded size of window
* whitespace fix
* links to models fixed
* bounding box drawing fix
* changes does not required
* code style fixes
* fixes
* frame checker added in tracking loop
* fixed import sys
* feature: Add video capture bitrate read-only property for FFMPEG backend
* test: For WIN32 property should be either expected or 0.
Added `IsOneOf` helper function, enabled only for _WIN32.
dnn(darknet-importer): add grouped convolutions, sigmoid, swish, scale_channels
* update darknet importer to support enetb0-yolo
* remove dropout (pr16438) and fix formatting
* add test for scale_channels
* disable batch testing for scale channels
* do not set LayerParams::name
* merge all activations into setActivation
* Add Tengine support .
* Modify printf to CV_LOG_WARNING
* a few minor fixes in the code
* Renew Tengine version
* Add header file for CV_LOG_WARNING
* Add #ifdef HAVE_TENGINE in tengine_graph_convolution.cpp
* remove trailing whitespace
* Remove trailing whitespace
* Modify for compile problem
* Modify some code style error
* remove whitespace
* Move some code style problem
* test
* add ios limit and build problem
* Modified as alalek suggested
* Add cmake 2.8 support
* modify cmake 3.5.1 problem
* test and set BUILD_ANDROID_PROJECTS OFF
* remove some compile error
* remove some extra code in tengine
* close test.
* Test again
* disable android.
* delete ndk version judgement
* Remove setenv() call . and add License information
* Set tengine default OFF. Close test .
Co-authored-by: Vadim Pisarevsky <vadim.pisarevsky@gmail.com>
Image sharpness, as well as brightness, are a critical parameter for
accuracte camera calibration. For accessing these parameters for
filtering out problematic calibraiton images, this method calculates
edge profiles by traveling from black to white chessboard cell centers.
Based on this, the number of pixels is calculated required to transit
from black to white. This width of the transition area is a good
indication of how sharp the chessboard is imaged and should be below
~3.0 pixels.
Based on this also motion blur can be detectd by comparing sharpness in
vertical and horizontal direction. All unsharp images should be excluded
from calibration as they will corrupt the calibration result. The same
is true for overexposued images due to a none-linear sensor response.
This can be detected by looking at the average cell brightness of the
detected chessboard.
Lets the user choose the maximum number of iterations the robust
estimator runs for, similary to findHomography. This can significantly
improve performance (at a computational cost).
The hard-coded string value "Mat" was used in the two format strings for vector_mat and vector_mat_template, preventing UMat arguments to functions that have these types from working correctly. as noted in #12231.
* Vectorize calculating integral for line for single and multiple channels
* Single vector processing for 4-channels - 25-30% faster
* Single vector processing for 4-channels - 25-30% faster
* Fixed AVX512 code for 4 channels
* Disable 3 channel 8UC1 to 32S for SSE2 and SSE3 (slower). Use new version of 8UC1 to 64F for AVX512.
fixed the ordering of contour convex hull points
* partially fixed the issue #4539
* fixed warnings and test failures
* fixed integer overflow (issue #14521)
* added comment to force buildbot to re-run
* extended the test for the issue 4539. Check the expected behaviour on the original contour as well
* added comment; fixed typo, renamed another variable for a little better clarity
* added yet another part to the test for issue #4539, where we run convexHull and convexityDetects on the original contour, without any manipulations. the rest of the test stays the same
* fixed several problems when running tests on Mac:
* OCL_pyrUp
* OCL_flip
* some basic UMat tests
* histogram badarg test (out of range access)
* retained the storepix fix in ocl_flip only for 16U/16S datatype, where the OpenCL compiler on Mac generates incorrect code
* moved deletion of ACCESS_FAST flag to non-SVM branch (where SVM is shared virtual memory (in OpenCL 2.x), not support vector machine)
* force OpenCL to use read/write for GPU<=>CPU memory transfers on machines with discrete video only on Macs. On Windows/Linux the drivers are seemingly smart enough to implement map/unmap properly (and maybe more efficiently than explicit read/write)
Changes:
* UMat for blur + rotate resulting in a speedup of around 2X on an i7
* support for boards larger than specified allowing to cover full FOV
* support for markers moving the origin into the center of the board
* increase detection accuracy
The main change is for supporting boards that are larger than the FOV of
the camera and have their origin in the board center. This allows
building OEM calibration targets similar to the one from intel real
sense utilizing corner points as close as possible to the image border.
cuda4dnn(concat): write outputs from previous layers directly into concat's output
* eliminate concat by directly writing to its output buffer
* fix concat fusion not happening sometimes
* use a whitelist instead of a blacklist
* cmake: allow customization of CMAKE_CXX_STANDARD value
* cmake: extra skip flag OPENCV_SKIP_CMAKE_CXX_STANDARD
* cmake: dump CMAKE_CXX_STANDARD value
- compiler option is missing in dumped flags
* G-API/Samples: Added a simple "privacy masking camera" sample
The main idea is to host this code for an opencv.org blog post only
* G-API/Samples: Modified privacy masking camera code to look better for the post
* G-API/Samples: fix Windows (MSVC) support in Privacy Masking Camera
* G-API/Samples: Addressed the majority of review comments in PMC
* G-API/Samples: Use TickMeter to measure time + more info in cmd options
* G-API/Samples: fix yet another Windows warning in PMC
* G-API/Samples: Fix wording in PMC cmd arg parameters
* Fix wording, again
* G-API/Samples: Fix PMC cmd-line arguments, again
G-API: Using functors as kernel implementation
* Implement ability to create kernel impls from functors
* Clean up
* Replace make_ocv_functor to ocv_kernel
* Clean up
* Replace GCPUFunctor -> GOCVFunctor
* Move GOCVFunctor to cv::gapi::cpu namespace
* Implement override for rvalue and lvalue cases
* Fix comments to review
* Remove GAPI_EXPORT for template functions
* Fix indentation
fixed cv::moveWindow() on mac
* fixed cv::moveWindow() on mac (issue #16343). Thanks to cwreynolds and saskatchewancatch for the help!
* fixed warnings about _x0 and _y0
* fixed warnings about _x0 and _y0
* Fix NN resize with dimentions > 4
* add test check for nn resize with channels > 4
* Change types from float to double
* Del unnecessary test file. Move nn test to test_imgwarp. Add 5 channels test only.
* improved version of HoughCircles (HOUGH_GRADIENT_ALT method)
* trying to fix build problems on Windows
* fixed typo
* * fixed warnings on Windows
* make use of param2. make it minCos2 (minimal value of squared cosine between the gradient at the pixel edge and the vector connecting it with circle center). with minCos2=0.85 we can detect some more eyes :)
* * added description of HOUGH_GRADIENT_ALT
* cleaned up the implementation; added comments, replaced built-in numeic constants with symbolic constants
* rewrote circle_popcount() to use built-in popcount() if possible
* modified some of HoughCircles tests to use method parameter instead of the built-in loop
* fixed warnings on Windows
trying to fix handling file storages with extremely long lines
* trying to fix handling of file storages with extremely long lines: https://github.com/opencv/opencv/issues/11061
* * fixed errorneous pointer access in JSON parser.
* it's now crash-test time! temporarily set the initial parser buffer size to just 40 bytes. let's run all the test and check if the buffer is always correctly resized and handled
* fixed pointer use in JSON parser; added the proper test to catch this case
* fixed the test to make it more challenging. generate test json with
*
**
***
etc. shape
Fix compilation errors on GLES platforms
* Do not include glx.h when using GLES
GL/glx.h is included on all LINUX plattforms, which is wrong
for a number of reasons:
- GL_PERSPECTIVE_CORRECTION_HINT is defined in GL/gl.h, so we
want gl.h not glx.h, the latter just includes the former
- GL/gl.h is a Desktop GL header, and should not be included
on GLES plattforms
- GL/gl.h is already included via QtOpenGL ->
QtGui/qopengl.h on desktop plattforms
This fixes a problem when Qt is compiled with GLES, which
is often done on ARM platforms where desktop GL is not or
only poorly supported (e.g. slow due to emulation).
Fixes part of #9171.
* Only set GL_PERSPECTIVE_CORRECTION_HINT when GL version defines it
GL_PERSPECTIVE_CORRECTION_HINT does not exist in GLES 2.0/3.x,
and has been deprecated in OpenGL 3.0 core profiles.
Fixes part of #9171.
* Add python version of panorama_stitching_rotating_camera and perspective_correction
* Updated code
* added in the docs
* added python code in the docs
* docs change
* Add java tutorial as well
* Add toggle in documentation
* Added the link for Java code
* format code
* Refactored code
This is a correction of the previously missleading documentation and a warning related to a common calibration failure described in issue 15992
* corrected incorrect description of failed calibration state.
see issue 15992
* calib3d: apply suggestions from code review by catree
QR-Code detector : multiple detection
* change in qr-codes detection
* change in qr-codes detection
* change in test
* change in test
* add multiple detection
* multiple detection
* multiple detect
* add parallel implementation
* add functional for performance tests
* change in test
* add perftest
* returned implementation for 1 qr-code, added support for vector<Mat> and vector<vector<Point2f>> in MultipleDetectAndDecode
* deleted all lambda expressions
* changing in triangle sort
* fixed warnings
* fixed errors
* add java and python tests
* change in java tests
* change in java and python tests
* change in perf test
* change in qrcode.cpp
* add spaces
* change in qrcode.cpp
* change in qrcode.cpp
* change in qrcode.cpp
* change in java tests
* change in java tests
* solved problems
* solved problems
* change in java and python tests
* change in python tests
* change in python tests
* change in python tests
* change in methods name
* deleted sample qrcode_multi, change in qrcode.cpp
* change in perf tests
* change in objdetect.hpp
* deleted code duplication in sample qrcode.cpp
* returned spaces
* added spaces
* deleted draw function
* change in qrcode.cpp
* change in qrcode.cpp
* deleted all draw functions
* objdetect(QR): extractVerticalLines
* objdetect(QR): whitespaces
* objdetect(QR): simplify operations, avoid duplicated code
* change in interface, additional checks in java and python tests, added new key in sample for saving original image from camera
* fix warnings and errors in python test
* fix
* write in file with space key
* solved error with empty mat check in python test
* correct path to test image
* deleted spaces
* solved error with check empty mat in python tests
* added check of empty vector of points
* samples: rework qrcode.cpp
* objdetect(QR): fix API, input parameters must be first
* objdetect(QR): test/fix points layout
* Reduce LLC loads, stores and multiplies on MulTransposed - 8% faster on VSX
* Add is_same method so c++11 is not required
* Remove trailing whitespaces.
* Change is_same to DataType depth check
Added type check for solvePnPGeneric | Issue: #16049
* Added type check
* Added checks before type fix
* Tests for 16049
* calib3d: update solvePnP regression check (16049)
- Added `explicit` to `VideoCapture` constructors with 2
arguments, 1 of them has default value
- Applied library code style
- Introduced 2 debug macros to improve readability of the code
Vectorize minMaxIdx functions
* Updated documentation and intrinsic tests for v_reduce
* Add other files back in from the forced push
* Prevent an constant overflow with v_reduce for int8 type
* Another alternative to fix constant overflow warning.
* Fix another compiler warning.
* Update comments and change comparison form to be consistent with other vectorized loops.
* Change return type of v_reduce_min & max for v_uint8 and v_uint16 to be same as lane type.
* Cast v_reduce functions to int to avoid overflow. Reduce number of parameters in MINMAXIDX_REDUCE macro.
* Restore cast type for v_reduce_min & max to LaneType
gcc 10+ has renamed this option, therefore check for gcc version before
deciding which name to use for opt parameter
Signed-off-by: Khem Raj <raj.khem@gmail.com>
support eltwise sum with different number of input channels in CUDA backend
* add shortcut primitive
* add offsets in shortcut kernel
* skip tests involving more than two inputs
* remove redundant modulus operation
* support multiple inputs
* remove whole file indentation
* skip acc in0 trunc test if weighted
* use shortcut iff channels are unequal
Enable cuda4dnn on hardware without support for __half
* Enable cuda4dnn on hardware without support for half (ie. compute capability < 5.3)
Update CMakeLists.txt
Lowered minimum CC to 3.0
* UPD: added ifdef on new copy kernel
* added fp16 support detection at runtime
* Clarified #if condition on atomicAdd definition
* More explicit CMake error message
Fix implicit conversion from array to scalar in python bindings
* Fix wrong conversion behavior for primitive types
- Introduce ArgTypeInfo namedtuple instead of plain tuple.
If strict conversion parameter for type is set to true, it is
handled like object argument in PyArg_ParseTupleAndKeywords and
converted to concrete type with the appropriate pyopencv_to function
call.
- Remove deadcode and unused variables.
- Fix implicit conversion from numpy array with 1 element to scalar
- Fix narrowing conversion to size_t type.
* Fix wrong conversion behavior for primitive types
- Introduce ArgTypeInfo namedtuple instead of plain tuple.
If strict conversion parameter for type is set to true, it is
handled like object argument in PyArg_ParseTupleAndKeywords and
converted to concrete type with the appropriate pyopencv_to function
call.
- Remove deadcode and unused variables.
- Fix implicit conversion from numpy array with 1 element to scalar
- Fix narrowing conversion to size_t type.·
- Enable tests with wrong conversion behavior
- Restrict passing None as value
- Restrict bool to integer/floating types conversion
* Add PyIntType support for Python 2
* Remove possible narrowing conversion of size_t
* Bindings conversion update
- Remove unused macro
- Add better conversion for types to numpy types descriptors
- Add argument name to fail messages
- NoneType treated as a valid argument. Better handling will be added
as a standalone patch
* Add descriptor specialization for size_t
* Add check for signed to unsigned integer conversion safety
- If signed integer is positive it can be safely converted
to unsigned
- Add check for plain python 2 objects
- Add check for numpy scalars
- Add simple type_traits implementation for better code style
* Resolve type "overflow" false negative in safe casting check
- Move type_traits to separate header
* Add copyright message to type_traits.hpp
* Limit conversion scope for integral numpy types
- Made canBeSafelyCasted specialized only for size_t, so
type_traits header became unused and was removed.
- Added clarification about descriptor pointer
Add lightweight IE hardware targets checks
nGraph: Concat with paddings
Enable more nGraph tests
Restore FP32->FP16 for GPU plugin of IE
try to fix buildbot
Use lightweight IE targets check only starts from R4
* Added java code for meanshift and optical_flow
* added java code for module video
* added appropriate spaces in codes
* converted absolute path to command line arguments
* added spaces at appropriate places
Python code examples for file IO in xml and yml format
* Initial "Pythonization" of file_input_output.cpp
* Moved file_input_output.py to correct location
* Nearly done Pythonizing file_input_output.cpp
* Python equivalent of file_input_output.py created
* Started Pythonizing camera_calibration.cpp
* Completed Python tutorial/sample code for file_input_output
* Resolved whitespace issues
* Removed tabs in file_input_output.cpp
* Patched import order and wrapped code in main function
* Changed string to docstring format in help file
* Updated link to Python example code
When building OpenCV as a sub-project using cmake's add_subdirectory()
the OpenCV's build options would be overwritten to its default
state. With cmake 3.13+ the CMP0077 policy, option() honors previous
definitions via set().
- some of `icvCvt_BGR*` functions have R with B channels
swapped what leads to the wrong conversion
- renames misleading `rgb` variable name to `bgr`
- swap back the conversion coefficients, `cB` should be the first
Signed-off-by: Janusz Lisiecki <jlisiecki@nvidia.com>
Actually, we can do this in constant time. xofs always
contains same or increasing offset values. We can instead
find the most extreme value used and never attempt to load it.
Similarly, we can note for all dx >= 0 and dx < (dwidth - cn)
where xofs[dx] + cn < xofs[dwidth-cn] implies dx < (dwidth - cn).
Thus, we can use this to control our loop termination optimally.
This fixes#16137 with little or no performance impact. I have
also added a debug check as a sanity check.
* add cv::compare test when Mat type == CV_16F
* add assertion in cv::compare when src.depth() == CV_16F
* cv::compare assertion minor fix
* core: add more checks
* enable tests for DNN_TARGET_CUDA_FP16
* disable deconvolution tests
* disable shortcut tests
* fix typos and some minor changes
* dnn(test): skip CUDA FP16 test too (run_pool_max)
* Handle det == 0 in findCircle3pts.
Issue 16051 shows a case where findCircle3pts returns NaN for the
center coordinates and radius due to dividing by a determinant of 0. In
this case, the points are colinear, so the longest distance between any
2 points is the diameter of the minimum enclosing circle.
* imgproc(test): update test checks for minEnclosingCircle()
* imgproc: fix handling of special cases in minEnclosingCircle()
G-API: Tutorial: Face beautification algorithm implementation
* Introduce a tutorial on face beautification algorithm
- small typo issue in render_ocv.cpp
* Addressing comments rgarnov smirnov-alexey
* Eltwise::DIV support in Halide backend
* fix typo
* remove div from generated test suite to pass CI, switching to manual test...
* ensure divisor not near to zero
* use randu
* dnn(test): update test data for Eltwise.Accuracy/DIV layer test
Add checks for empty operands in Matrix expressions that don't check properly
* Starting to add checks for empty operands in Matrix expressions that
don't check properly.
* Adding checks and delcarations for checker functions
* Fix signatures and add checks for each class of Matrix Expr operation
* Make it catch the right exception
* Don't expose helper functions to public API
* G-API: Added G-API Overview slides & its source code
- Sample code snippets are moved to separate files;
- Introduced a separate benchmark to measure Fluid/OpenCV
performance;
- Added notes on API changes (it is still a 4.0, not a 4.2 talk!)
- Added a "Metropolis" beamer download-n-build script.
* G-API: Addressed review issues on G-API overview slides
* imgproc: Prevent 1B overrun of 8C3 SIMD optimization
The fourth value read via v_load_q is essentially ignored,
but can cause trouble if it happens to cross page boundaries.
The final few iterations may attempt to read the most extreme
elements of S, which will read 1B beyond the array in most
aligment cases. Dynamically compute the stop. This could be
hoised from the loop, but will require a more extensive change.
Likewise, cleanup the iteration increment statements to make
it more obvious they do channel count (3) elements per pass.
This should resolve#16137
* imgproc(resize): extra check
dnn(eltwise): fix handling of different number of channels
* dnn(test): reproducer for Eltwise layer issue from PR16063
* dnn(eltwise): rework support for inputs with different channels
* dnn(eltwise): get rid of finalize(), variableChannels
* dnn(eltwise): update input sorting by number of channels
- do not swap inputs if number of channels are same after truncation
* dnn(test): skip "shortcut" with batch size 2 on MYRIAD targets
G-API: Fix various issues for 4.2 release
* G-API: Fix issues reported by Coverity
- Fixed: passing values by value instead of passing by reference
* G-API: Fix redundant std::move()'s in return statements
Fixes#15903
* G-API: Added a smarter handling of Stop messages in the pipeline
- This should fix the "expected 100, got 99 frames" problem
- Fixes#15882
* G-API: Pass enum instead of GKernelPackage in Streaming test parameters
- Likely fixes#15836
* G-API: Address review issues in new bugfix comments
* G-API-NG/Docs: Added a tutorial page on interactive face detection sample
- Introduced a "--ser" option to run the pipeline serially for
benchmarking purposes
- Reorganized sample code to better fit the documentation;
- Fixed a couple of issues (mainly typos) in the public headers
* G-API-NG/Docs: Reflected meta-less compilation in new G-API tutorial
* G-API-NG/Docs: Addressed review comments on Face Analytics Pipeline example
cuda4dnn(resize): process multiple channels each iteration
* resize bilinear: process multiple chans. per iter.
* remove unused headers
* correct dispatch logic
* resize_nn: process multiple chans. per iter.
* resize: HResizeLinear reduce duplicate work
There appears to be a 2x unroll of the HResizeLinear against k,
however the k value is only incremented by 1 during the unroll. This
results in k - 1 duplicate passes when k > 1.
Likewise, the final pass may not respect the work done by the vector
loop. Start it with the offset returned by the vector op if
implemented. Note, no vector ops are implemented today.
The performance is most noticable on a linear downscale. A set of
performance tests are added to characterize this. The performance
improvement is 10-50% depending on the scaling.
* imgproc: vectorize HResizeLinear
Performance is mostly gated by the gather operations
for x inputs.
Likewise, provide a 2x unroll against k, this reduces the
number of alpha gathers by 1/2 for larger k.
While not a 4x improvement, it still performs substantially
better under P9 for a 1.4x improvement. P8 baseline is
1.05-1.10x due to reduced VSX instruction set.
For float types, this results in a more modest
1.2x improvement.
* Update U8 processing for non-bitexact linear resize
* core: hal: vsx: improve v_load_expand_q
With a little help, we can do this quickly without gprs on
all VSX enabled targets.
* resize: Fix cn == 3 step per feedback
Per feedback, ensure we don't overrun. This was caught via the
failure observed in Test_TensorFlow.inception_accuracy.
Test create custom layer in python
* check is contiguos
* Add custom layer test
* Fix test
* Remove assert
* Move assert to pyopencv dnn
* remove assert
* Add unregister
* Fix python2
* proto to bytearray
* Fix data type
* G-API: Addressed various documentation issues
- Fixed various typos and missing references;
- Added brief documentaion on G_TYPED_KERNEL and G_COMPOUND_KERNEL macros;
- Briefly described GComputationT<>;
- Briefly described G-API data objects (in a group section).
* G-API: Some clean-ups in doxygen, also a chapter on Render API
* G-API: Expose more graph compilation arguments in the documentation
* G-API: Address documentation review comments
* calib3d: use normalized input in solvePnPGeneric()
* calib3d: java regression test for solvePnPGeneric
* calib3d: python regression test for solvePnPGeneric
* core: disable invalid constructors in C API by default
- C API objects will lose their default initializers through constructors
* samples: stop using of C API
Fix cudacodec python
* Add python bindings to cudacodec.
* Allow args with CV_OUT GpuMat& or CV_OUT cuda::GpuMat& to generate python bindings that allow the argument to be an optional output in the same way as OutputArray.
* Add wrapper flag to indicate that an OutputArray is a GpuMat.
* python: drop CV_GPU, extra checks in test
* Remove "cuda::GpuMat" check rom python parser
G-API-NG/Streaming: don't require explicit metadata in compileStreaming()
* First probably working version
Hardcode gose to setSource() :)
* Pre final version of move metadata declaration from compileStreaming() to setSource().
* G-API-NG/Streaming: recovered the existing Streaming functionality
- The auto-meta test is disabling since it crashes.
- Restored .gitignore
* G-API-NG/Streaming: Made the meta-less compileStreaming() work
- Works fine even with OpenCV backend;
- Fluid doesn't support such kind of compilation so far - to be fixed
* G-API-NG/Streaming: Fix Fluid to support meta-less compilation
- Introduced a notion of metadata-sensitive passes and slightly
refactored GCompiler and GFluidBackend to support that
- Fixed a TwoVideoSourcesFail test on streaming
* Add three smoke streaming tests to gapi_streaming_tests.
All three teste run pipeline with two different input sets
1) SmokeTest_Two_Const_Mats test run pipeline with two const Mats
2) SmokeTest_One_Video_One_Const_Scalar test run pipleline with Mat(video source) and const Scalar
3) SmokeTest_One_Video_One_Const_Vector test run pipeline with Mat(video source) and const Vector
# Please enter the commit message for your changes. Lines starting
* style fix
* Some review stuff
* Some review stuff
* Added Swish and Mish activations
* Fixed whitespace errors
* Kernel implementation done
* Added function for launching kernel
* Changed type of 1.0
* Attempt to add test for Swish and Mish
* Resolving type mismatch for log
* exp from device
* Use log1pexp instead of adding 1
* Added openCL kernels
(1/4) Revert "Correct image borders and principal point computation in cv::stereoRectify"
This reverts commit 93ff1fb2f2.
(2/4) Revert "fix calib3d changes in 6836 plus some others"
This reverts commit fa42a1cfc2.
(3/4) Revert "fix compiler warning"
This reverts commit b3d55489d3.
(4/4) Revert "add test for 6836"
This reverts commit d06b8c4ea9.
Tests for argument conversion of Python bindings generator
* Tests for parsing elemental types from Python bindings
- Add positive and negative tests for int, float, double, size_t,
const char*, bool.
- Tests with wrong conversion behavior are skipped.
* Move implicit conversion of bool to integer/floating types to wrong
conversion behavior.
Fix incorrect use of std::move() in g-api perf tests
* First version
* Fix perfomace tests
Replace
c.apply(...);
with
cc = c.compile(...);
cc(...);
* Remove output meta arguments from .compile()
* Style fix
* Remove useless commented string
* Stick to common pattern : i.e. use gin() and gout() explicitly.
* Use cc(gin(...), gout(...)) in all cases.
* Fix infinite loop when trying to change state of the busy camera
- Add finite number of attempts in tryIoctl functions
10 by default.
* Introduced new flag for ioctl call to handle EBUSY
Improving VSX performance of integral function
* Adding support for vector get function on VSX datatypes so the
integral function gains a bit of performance.
* Removing get as a datatype member function and implementing a new HAL
instruction v_extract_n to get the n-th element of a vector register.
* Adding SSE/NEON/AVX intrinsics.
* Implement new HAL instruction v_broadcast_element on VSX/AVX/NEON/SSE.
* core(simd): add tests for v_extract_n/v_broadcast_element
- updated docs
- commented out code to repair compilation
- added WASM and MSA default implementations
* core(simd): fix compilation
- x86: avoid _mm256_extract_epi64/32/16/8 with MSVS 2015
- x86: _mm_extract_epi64 is 64-bit only
* cleanup
Add retrieve encoded frame to VideoCapture
* Add capacity to retrieve the encoded frame from a VideoCapture object.
* Correct raw codec and pixle format output from ffmpeg capture.
* Remove warnings from build.
* Added VideoCaptureRaw subclass.
* Include abstract base class VideoCaptureBase and rename new subclass VideoContainer as suggested by mshabunin.
* Remove using.
* Change base class name for compatibility with jave bindings generator.
* Move grab and retrieve and add override specifier
* Add setRaw and readRaw to IVideoCapture interface
-setRaw to disable video decoding and enable bitstream filters from mp4 to h254 and h265.
-readRaw to return the raw undecoded/filtered bitstream.
Add createRawCapture to initiate a backend with setRaw enabled.
Remove inheritance and use an independant VideoContainer subclass with IVideoCapture member.
* Address unused parameter warings.
Remove VideoContainer from python bindings as it no longer returns a Mat.
Use opencv type uchar instead of unsigned char.
Add missing destructor to VideoContainer class.
* Address build warnings and include all params in documentation.
* Include deprecated bitstream filtering API.
* Update codec_id query to work with older ffmpeg api's.
Change api version defines to be consistent - most recent api version first.
* Fix typo.
* Update test to work with naming of new files in the extra repo
* Investigate test failure
* Check bytes read by ffmpeg
* Removed mp4 video container test
* Applied suggested changes.
* videoio: rework API for extraction of RAW video streams
- FFmpeg only
* address review comments
Introducing the sample of Face Beautification algorithm implemented via Graph-API
* Introducing the sample of Face Beautification algorithm implemented via Graph-API
- 'gapi/samples/face_beautification.cpp' added
- FIXME added in 'gcpukernel.hpp'
* INF_ENGINE fix
- preprocessing clauses added not to run the sample without Inference Engine
* INF_ENGINE fix 2
- warnings removed
* Fixes
- checking IE version cut as there is no dependency
- some alignments fixed
- the comment about preprocessing commands fixed
* ie::backend() issue fix (according to dmatveev)
- as the sample needs the cv::gapi::ie::backend() to be defined regardless of having IE or not, there is its throw-error definition in `giebackend.cpp` now (by dmatveev)
- for the same reason, #includes in `giebackend.hpp` are fixed
- HAVE_INF_ENGINE check is removed from the sample
Implement Camera Multiplexing API
* IdideoCapture + two wrong function
function waitAny
Add errors catcher
Stub for Python added.
Sifting warnings
One test added
Two tests for camera and Perf tests added
* Perf sync and async tests for waitAny() added, waitAnyInterior() deleted, getDeviceHandle() deleted
* Variable OPENCV_TEST_CAMERA_LIST added
* Without fps set
* ASSERT_FAILED for environment variable
* Perf tests is DISABLED_
* --Trailing whitespace
* Return false from cap.cpp deleted
* Two functions deleted from interface, +range for, +environment variable in test_camera
* Space deleted
* printf deleted, perror added
* CV_WRAP deleted, cv2 cleared from stubs
* -- space
* default timeout added
* @param changed
* place of waitAny changed
* --whitespace
* ++function description
* function description changed
* revert unused changes
* videoio: rework API for VideoCapture::waitAny()
Supported ONNX Squeeze, ReduceL2 and Eltwise::DIV
* Support eltwise div
* Fix test
* OpenCL support added
* refactoring
* fix code style
* Only squeeze with axes supported
Fix an error during Windows installation caused by trying to create the already existing Build directory. Also excluding intermediate steps for Install directory creation.
* Convert moments in tile algorithms to HAL (1.3x faster for VSX).
* Adding NEON code back in for non 64-bit platforms.
* Remove floats from post processing.
Clarify stereoRectify() doc
The function stereoRectify() takes as input a coordinate transform between two cameras. It is ambiguous how it goes. I clarified that it goes from the second camera to the first.
* Use FlsAlloc/FlsFree/FlsGetValue/FlsSetValue instead of TlsAlloc/TlsFree/TlsGetValue/TlsSetValue to implment TLS value cleanup when thread has been terminated on Windows Vista and above
* Fix 32-bit build
* Fixed calling convention of cleanup callback
* WINAPI changed to NTAPI
* Use proper guard macro
* Vectorize flipHoriz and flipVert functions.
* Change v_load_mirror_1 to use vec_revb for VSX
* Only use vec_revb in ISA3.0
* Removing vec_revb code since some of the older compilers don't fully support it.
* Use new v_reverse intrinsic and cleanup code.
* Ensure there are no alignment issues with copies
* Changes disparity image to float representation
Signed-off-by: Connor James Smith <cjs.connor.smith@gmail.com>
* samples: update disparity multiplier handling in stereo_match.cpp
* Doc bugfix
The documentation page StereoBinaryBM and StereoBinarySGBM says that it returns a disparity that is scaled multiplied by 16. This scaling must be undone before calling reprojectImageTo3D, otherwise the results are wrong. The function reprojectImageTo3D() could do this scaling internally, maybe, but at least the documentation must explain that this has to be done.
* calib3d: update reprojectImageTo3D documentation
* calib3d: add StereoBM/StereoSGBM into notes list
- move TLS & instrumentation code out of core/utility.hpp
- (*) TLSData lost .gather() method (to dispose thread data on thread termination)
- use TLSDataAccumulator for reliable collecting of thread data
- prefer using of .detachData() + .cleanupDetachedData() instead of .gather() method
(*) API is broken: replace TLSData => TLSDataAccumulator if gather required
(objects disposal on threads termination is not available in accumulator mode)
I think it would help to change all 3 of the the input file arguments to be "positional" for consistency with the other tutorials. This also simplifies the command line input to run this tutorial by reducing typing, and helpfully prints the "usage" info if any of the 3 required inputs are missing.
I'm new to OpenCV and working through the tutorials. I kept getting runtime errors with this one until I realized that the arguments weren't positional, and I was missing the "--input1", "--input2, "--input3" flags preceding the filenames. All of the previous tutorials had required filenames as positional arguments and didn't require this.
The original code would require each input to be specified like this:
./compareHist_Demo --input1 filename1 --input2 filename2 --input3 filename3
But with this change, the above command is simplified to:
./compareHist_Demo filename1 filename2 filename3
This avoids a confusing runtime error to make things simpler for newcomers like me :)
Fixing bug with comparison of v_int64x2 or v_uint64x2
* Casting v_uint64x2 to v_float64x2 and comparing does NOT work in all cases. Rewrite using epi64 instructions - faster too.
* Fix bad merge.
* Fix equal comparsion for non-SSE4.1. Add test cases for v_int64x2 comparisons.
* Try to fix merge conflict.
* Only test v_int64x2 comparisons if CV_SIMD_64F
* Fix compiler warning.
The usage function states that the default for match_conf is
0.65 if the default SURF feature finder is used, and 0.3 for
orbs. Indeed, if --feature orbs is used, match_conf is set
to 0.3f. This is a NOP, because the real default is also set
to 0.3f. Change it to 0.65f when SURF is in play.
* G-API: Doxygen documentatation for Async API
* G-API: Doxygen documentatation for Async API
- renamed local variable (reading parameter async) async ->
asyncNumReq in object_detection DNN sample
to avoid Doxygen erroneous linking the sample to cv::gapi::wip::async
documentation
* G-API-NG/Streaming: Introduced a Streaming API
Now a GComputation can be compiled in a special "streaming" way
and then "played" on a video stream.
Currently only VideoCapture is supported as an input source.
* G-API-NG/Streaming: added threading & real streaming
* G-API-NG/Streaming: Added tests & docs on Copy kernel
- Added very simple pipeline tests, not all data types are covered yet
(in fact, only GMat is tested now);
- Started testing non-OCV backends in the streaming mode;
- Added required fixes to Fluid backend, likely it works OK now;
- Added required fixes to OCL backend, and now it is likely broken
- Also added a UMat-based (OCL) version of Copy kernel
* G-API-NG/Streaming: Added own concurrent queue class
- Used only if TBB is not available
* G-API-NG/Streaming: Fixing various issues
- Added missing header to CMakeLists.txt
- Fixed various CI issues and warnings
* G-API-NG/Streaming: Fixed a compile-time GScalar queue deadlock
- GStreamingExecutor blindly created island's input queues for
compile-time (value-initialized) GScalars which didn't have any
producers, making island actor threads wait there forever
* G-API-NG/Streaming: Dropped own version of Copy kernel
One was added into master already
* G-API-NG/Streaming: Addressed GArray<T> review comments
- Added tests on mov()
- Removed unnecessary changes in garray.hpp
* G-API-NG/Streaming: Added Doxygen comments to new public APIs
Also fixed some other comments in the code
* G-API-NG/Streaming: Removed debug info, added some comments & renamed vars
* G-API-NG/Streaming: Fixed own-vs-cv abstraction leak
- Now every island is triggered with own:: (instead of cv::)
data objects as inputs;
- Changes in Fluid backend required to support cv::Mat/Scalar were
reverted;
* G-API-NG/Streaming: use holds_alternative<> instead of index/index_of test
- Also fixed regression test comments
- Also added metadata check comments for GStreamingCompiled
* G-API-NG/Streaming: Made start()/stop() more robust
- Fixed various possible deadlocks
- Unified the shutdown code
- Added more tests covering different corner cases on start/stop
* G-API-NG/Streaming: Finally fixed Windows crashes
In fact the problem hasn't been Windows-only.
Island thread popped data from queues without preserving the Cmd
objects and without taking the ownership over data acquired so when
islands started to process the data, this data may be already freed.
Linux version worked only by occasion.
* G-API-NG/Streaming: Fixed (I hope so) Windows warnings
* G-API-NG/Streaming: fixed typos in internal comments
- Also added some more explanation on Streaming/OpenCL status
* G-API-NG/Streaming: Added more unit tests on streaming
- Various start()/stop()/setSource() call flow combinations
* G-API-NG/Streaming: Added tests on own concurrent bounded queue
* G-API-NG/Streaming: Added more tests on various data types, + more
- Vector/Scalar passed as input;
- Vector/Scalar passed in-between islands;
- Some more assertions;
- Also fixed a deadlock problem when inputs are mixed (1 constant, 1 stream)
* G-API-NG/Streaming: Added tests on output data types handling
- Vector
- Scalar
* G-API-NG/Streaming: Fixed test issues with IE + Windows warnings
* G-API-NG/Streaming: Decoupled G-API from videoio
- Now the core G-API doesn't use a cv::VideoCapture directly,
it comes in via an abstract interface;
- Polished a little bit the setSource()/start()/stop() semantics,
now setSource() is mandatory before ANY call to start().
* G-API-NG/Streaming: Fix STANDALONE build (errors brought by render)
If an aravis camera is software triggered, a trigger needs to be explicitly sent using `arv_camera_software_trigger`, otherwise the camera will not grab any frames.
* New v_reverse HAL intrinsic for reversing the ordering of a vector
* Fix conflict.
* Try to resolve conflict again.
* Try one more time.
* Add _MM_SHUFFLE. Remove non-vectorize code in SSE2. Fix copy and paste issue with NEON.
* Change v_uint16x8 SSE2 version to use shuffles
* Adding support for vectorized masking for uchar/ushort.
* Fixing bug where mask was zeroing the dst. Improved the way to calculate
the mask and tweaked for further performance improvements.
* Fixing mask comparison test.
* Restricting to one channel.
* Adding support for 3 channels, switch old approach to start using HAL's
v_select.
> Size parameter is changed from int to cv::Size type to allow rectangle kernels
> Kernel creation code is adopted for different kernel sizes to not create only white images on the output
G-API: add transformation logic to GCompiler
* Introduce transformation logic to GCOmpiler
* Remove partialOk() method
* Fix minor issues
* Refactor code according to code review
1. Re-design matchPatternToSubstitute logic
2. Update transformations order
3. Replace check_transformations pass with a
one time check in GCompiler ctor
* Revert unused nodes handling in pattern matching
* Address minor code review issues
* Address code review comments:
1) Fix some mistakes
2) Add new tests for endless loops
3) Update GCompiler's transformations logic
* Simplify GCompiler check for endless loops
1. Simplify transformations endless loops check:
- Original idea wasn't a full solution
- Need to develop a good method (heuristic?) to find loops
in general case (TODO)
2. Remove irrelevant Endless Loops tests
3. Add new "bad arg" tests and unit tests
* Update comments
* - headers in "infer/" and "infer/ie/" folders are included into gapi_ext_hdrs;
+ because of that a few #includes are required in the headers
- HAVE_INF_ENGINE flag check in headers "infer/ie.hpp" and "infer/ie/util.hpp" is deleted
* - the "ie/util.hpp" header is a private header now as it's used for tests; it's been moved to the scr directory to the place next to the implementation file "ie/giebackend.cpp"
- the path to this header in files "ie/giebackend.cpp" and "test/infer/gapi_infer_ie_test.cpp" is updated
- As it's private header now and explicitly depends on IE, the "HAVE_INF_ENGINE" flag check is returned
* Support GArray as input in fluid kernels
* Create tests on GArray input in fluid
* Some fixes to fully support GArray
* Refactor code and change the kernel according to review
* Add histogram calculation as a G-API kernel
Add assert that input GArgs in fluid contain at least one GMat
Detected by clang trunk:
```
opencv/modules/core/src/ocl.cpp:4337:37: warning: object backing the pointer will be destroyed at the end of the full-expression [-Wdangling]
CV_OCL_CHECK_RESULT(retval, cv::format("clCreateBuffer(capacity=%lld) => %p", (long long int)entry.capacity_, (void*)entry.clBuffer_).c_str());
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
opencv/modules/core/src/ocl.cpp:193:42: note: expanded from macro 'CV_OCL_CHECK_RESULT'
if (0) { const char* msg_ = (msg); CV_UNUSED(msg_); /* ensure const char* type (cv::String without c_str()) */ } \
```
because `cv::format` yields a temporary std::string, and thus `msg_` points to a destroyed buffer.
* Fix the detection of XIMEA on Windows (when it has been installed by another user with administrative privileges, for example).
* Change the flow: we first try HKEY_CURRENT_USER key and, if empty, then try HKEY_LOCAL_MACHINE
* in embindgen.py added inpaint function
* added test for inpaint function and fixed function in build_js
* fixed test for inpaint function
* rotate deleted, build_js.py fixed
G-API: Fix Journal usage in Fluid backend (#15238)
* Fix Journal usage in Fluid backend
* Delete dumpDotRequired(): invalid check
* Update mem consumption test
* Test that new test works
* Debug memory consumption function
* Increase iterations in test
* Re-write memory consumption measurement part
* Restore correct fix for Fluid journals
* G-API: rename ArgKind OPAQUE to GOPAQUE
Rename ArgKind value to GOPAQUE to fix conflict in the
user code when wingdi.h is included: it defines OPAQUE
macro that (for some reason) is chosen instead of ArgKind
value
* Add compatibility with existing API
* Renamed GOPAQUE to OPAQUE_VAL
* G-API-NG/API: Introduced inference API and IE-based backend
- Very quick-n-dirty implementation
- OpenCV's own DNN module is not used
- No tests so far
* G-API-NG/IE: Refined IE backend, added more tests
* G-API-NG/IE: Fixed various CI warnings & build issues + tests
- Added tests on multi-dimensional own::Mat
- Added tests on GMatDesc with dimensions
- Documentation on infer.hpp
- Fixed more warnings + added a ROI list test
- Fix descr_of clash for vector<Mat> & standalone mode
- Fix build issue with gcc-4.8x
- Addressed review comments
* G-API-NG/IE: Addressed review comments
- Pass `false` to findDataFile()
- Add deprecation warning suppression macros for IE
* G-API: fix GOCLExecutable issue with UMat lifetime
Add tests on initialized/uninitialized outputs for all
backends
* Use proper clean-up procedure for magazine
* Rename InitOut test and reduce tested sizes
* Enable output allocation test
G-API: GAPI_TRANSFORM internal functionality rework (#14952)
* Change internal pattern and substitute signatures and refactor tests
* Enhance GArrayU with type-checker function
Add a couple of new tests on GAPI_TRANSFORM
G-API: clean up accuracy tests (#14945)
* Delete createOutputMatrices flag
Update the way compile args function is created
Fix instantiation suffix print function
* Update comment (NB)
* Make printable comparison functions
* Use defines instead of objects for compile args
* Remove custom printers, use operator<< overload
* Remove SAME_TYPE and use -1 instead
* Delete createOutputMatrices flag in new tests
* Fix GetParam() printed values
* Update Resize tests: use CompareF object
* Address code review feedback
* Add default cases for operator<< overloads
* change throw to GAPI_Assert
G-API: Add output allocation tests for backends (#15012)
* Add output tests for backends
* Fix large size test: output is in fact reallocated
* Use cv::Mat copies for reallocation tracking
* Separate LargeSizeWithCorrectSubmatrix test
* Rename backed output allocation tests
* Address code review feedback
Update test names
Add illustrative "expect (non-)empty" checks
Rename mat "copy" to mat reference
Add more pointer checks
* Add illustrative checks
- Added new graph compile time argument to specify multiple independent
ROIs (Tiles)
- Added new "executable" with serial loop other user specified
ROIs(Tiles)
- refactored graph traversal code into separate function to be called
once
- added saturate cast to Fluid AddCsimple test kernel
G-API planar kernels (#14917)
* Added resizeP with tests
* NV12 planar filters
* fix warnings in ResizeP test
* fix out mat ocv warning
* sz_on - > sz rename
* cpu tests new signature
* try to fix resizeP test
* trailing spaces remove
* doxygen doc fixed
* doxygen minor fix
* more doxygen fixes
* Doxygen corrected and extended after review.
G-API: Parameterized render tests (#14892)
* Init commit
* Add mat size as test parameter
* Add test for text render
* Add test for rect render
* Add tests for line and circle
* Remove old render tests
* Init output mats
* Remove methods input arguments
* Add comment about data loss in BGR2NV12 conversion
* Add edge test cases
* Replace default color for out mats black -> white
G-API: Introduce new approach to write accuracy tests (#14757)
* G-API: Introduce new common accuracy test fixture
* Enable Range<> to Seq<> implicit conversion
* Fix shadowing parameters
* Update license headers
* Rename ALIGNED_TYPE to SAME_TYPE
* Move MkRange to tests
* Fix TODO(agolubev) in test instantiations
* Squash simple fixture declarations in one line
* Remove unused line
* Fix Windows issues with macro expansion
* Choose between 1 or 2 matrix initialization
* Redesign common class behavior
Use "views" for GetParam() provided by GTest
base class instead of doing segregation
(with copy!) of common and specific parameters:
request common or specific parameter directly
by index from GetParam()-returned parameters
* Refine user-level API and usage of new test model
* Fix -fpermissive errors
* Remove unnecessary init calls
* Replace GCompileArgs member variable with func ptr
* Rename initMatsRandN to make its behavior explicit
Rename initMatsRandN to initMatrixRandN to eliminate confusion:
initMatsRandN only initialized first matrix (similarly to
initMatrixRandU)
* Fix common of initNothing
* Update copyright dates in missed files
* Add check for specific parameters
* Fix coment stlye
Description:
Moved NVIDIA_Optical_flow sample app and comparison app to
opencv_contrib branch. Added CUDA_CUDA_LIBRARY in CMakeLists.txt for
resolving linker errors.
* Introduce GAPI_TRANSFORM initial interface
Comes along with simple tests and kernel package changes
* Fix documentation and adjust combine() function
* Fix stuff after rebasing on master
* Remove redundant functionality
* Refactoring according to review feedback provided
* Fixes according to review feedback
* Reconsider transformations return and fix a warning
* Fixes from code review
* Add a new simple test
* Cleanup, added tests on GScalar, GMatP, GArray
G-API: Add parameters alpha and beta in tests on ConvertTo kernel (#14684)
* Add parameters alpha and beta in tests on ConvertTo kernel
* Change tolerance function
* Reduce number of test cases
G-API aux kernels (#14599)
* Removed gcpuimgproc.hpp and gcpucore.hpp
* Changed GModel::orderedInputs and orderedOutputs to get ConstGraph&
* Added auxiliaryKernels() method of GBackend::Priv
G-API: Kernel package design (#13851)
* Remove cv::unite_policy from API
* Add check that all id in kernel package are unique
* Refactor checker id procedure
* Remove cv::gapi::GLookupOrder from API
* Implement cv::gapi::use_only
* Fix samples
* Fix docs
* Fix comments to review
* Remove unite_policy
* Fix GKernelPackage::backends()
* Fix comments to review
* Fix all_unique
* Fix comments to review
* Fix comments to review
* Remove out of date tests
OE-11 Logging revamp (#13909)
* Initial commit for log tag support.
Part of #11003, incomplete. Should pass build.
Moved LogLevel enum to logger.defines.hpp
LogTag struct used to convey both name and log level threshold as
one argument to the new logging macro. See logtag.hpp file, and
CV_LOG_WITH_TAG macro.
Global log level is now associated with a global log tag, when a
logging statement doesn't specify any log tag. See getLogLevel and
getGlobalLogTag functions.
A macro CV_LOGTAG_FALLBACK is allowed to be re-defined by other modules
or compilation units, internally, so that logging statements inside
that unit that specify NULL as tag will fall back to the re-defined tag.
Line-of-code information (file name, line number, function name),
together with tag name, are passed into the new log message sink.
See writeLogMessageEx function.
Fixed old incorrect CV_LOG_VERBOSE usage in ocl4dnn_conv_spatial.cpp.
* Implemented tag-based log filtering
Added LogTagManager. This is an initial version, using standard C++
approach as much as possible, to allow easier code review. Will
optimize later.
A workaround for all static dynamic initialization issues is
implemented. Refer to code comments.
* Added LogTagConfigParser.
Note: new code does not fully handle old log config parsing behavior.
* Fix log tag config vs registering ordering issue.
* Started testing LogTagConfigParser, incomplete.
The intention of this commit is to illustrate the capabilities of
the current design of LogTagConfigParser.
The test contained in this commit is not complete. Also, design changes
may require throwing away this commit and rewriting test code from
scratch.
Does not test whitespace segmentation (multiple tags on the config);
will do in next commit.
* Added CV_LOGTAG_EXPAND_NAME macro
This macro allows to be re-defined locally in other compilation units
to apply a prefix to whatever argument is passed as the "tag" argument
into CV_LOG_WITH_TAG. The default definition in logger.hpp does not
modify the argument. It is recommended to include the address-of
operator (ampersand) when re-defined locally.
* Added a few tests for LogTagManager, some fail.
See test_logtagmanager.cpp
Failed tests are: non-global ("something"), setting level by name-part
(first part or any part) has no effect at all.
* LogTagManagerTests substring non-confusion tests
* Fix major bugs in LogTagManager
The code change is intended to approximate the spec documented in
https://gist.github.com/kinchungwong/ec25bc1eba99142e0be4509b0f67d0c6
Refer to test suite in test_logtagmanager.cpp
Filter test result in "opencv_test_core" ...
with gtest_filter "LogTagManager*"
To see the test code that finds the bugs, refer to original commits
(before rebase; might be gone)
.. f3451208 (2019-03-03T19:45:17Z)
.... LogTagManagerTests substring non-confusion tests
.. 1b848f5f (2019-03-03T01:55:18Z)
.... Added a few tests for LogTagManager, some fail.
* Added LogTagManagerNamePartNonConfusionTest.
See test_logtagmanager.cpp in modules/core/test.
* Added LogTagAuto for auto registration in ctor
* Rewritten LogTagManager to resolve issues.
* Resolves code review issues around 2019-04-10
LogTagConfigParser::parseLogLevel - as part of resolving code review
issues, this function is rewritten to simplify control flow and to
improve conformance with legacy usage (for string values "OFF",
"DISABLED", and "WARNINGS").
G-API external backend development (#13943)
* Moved HostCtor and ConstVal from gapi_priv.hpp to objref.hpp
* Added gmodel_priv.hpp, added export of symbols from gmodel.hpp
* Added export of binInArg and bindOutArg
* Renamed gapi_priv.*pp -> gorigin.*pp
* Added a fixme on collecting exports inside one class
Many of the Android samples rely on an options menu to work properly
but, at least on newer devices, the menu is permanently hidden by the
Android theme "Theme.NoTitleBar.Fullscreen", which means that most
of the examples were dysfunctional.
Allow nodes produced after some operation to be
"unused": not being an output and not being used
as inputs to other operations
Add fluid test to cover this case
* Fix Issue 13908
Allocate the matrix _Jo only when the solver needs it (ie when solver.state == CvLevMarq::CALC_J)
* Fix calib3D unit test
Fix _Jo allocation when stddev is not empty
* Removing trailing whitespaces
* scope _dp* variables
* fix whitespaces
* Android build improvements
* look for NDK in "ndk-bundle" directory under the SDK directory if location not specified
* look for cmake and ninja in "cmake" directory under the SDK directory if not found in the path
* disable use of ccache if not found in the path
* Redo build tool existence checks
* core, stitching: revise syntax to support Visual C++ 2013
* stitching: revise syntax again to support Visual C++ 2013 and other compilers
* stitching: minor update to clarify changes
* LineIterator witout a Mat
cv::LineIterator can be used without being attached to any cv::Mat, it only needs the size and type of data. An alternative constructor has been defined for that.
In that case, a LineIterator can no more be dereferenced with the * operator, but pos() still returns valid pixel positions.
It can be useful when LineIterator is just used to compute positions of pixels on a line, without requiring to build a Mat just for that.
Use case : with a dataset that would represent a huge image, pixel positions can be pre-computed before querying the dataset API.
* Update imgproc.hpp
removed trailing spaces
* Update drawing.cpp
fixed warning
* Add Sobel kernel which returns both dx and dy
* Splice dx and dy and extend add_border function
Also change some tests parameters
* Add borderValue parameter in test
* Introduces fluid kernel for sobelxy
Adds tests (basic and performance) on new backend
* Introduces BufHelper struct for some arithmetic
GAPI: Add normalize kernel in G-API (#13721)
* Add normalize kernel in G-API
In addition add several tests on new kernel
* Fix indentations and normalize test structure
* Move normalize kernel from imgproc to core
Set default parameter ddepth to -1
* Fix alignment
* Return vector of MetaArg instead of MatDesc and fix test with ADL check
* Fix construction of vector
* Change names and tests according to review
Also add GAPI_EXPORTS prefix for two ostream operators
* Add version of descr_of function taking vector of Mat
* Overload descr_of function for cv::Mat
* Add template function instead of copypasting and change tests a little
Improve stitching detailed (#13584)
* Added block size getter/setters
* Added a bunch of new features to the stitching_detailed sample
* Do not required XFEATURES2D for default use
* Add support for akaze features in stitching_detailed
* Improved sample logs
* dnn/Vulkan: fix GPU hang for heavy convolution tasks
Intel i915 driver will declare GPU hang if the compute shader
takes too long to complete. See
https://bugs.freedesktop.org/show_bug.cgi?id=108947 for details.
The idea in this commit is to divide heavy task into several light
ones and run compute shader multiple times to make each run take
short time enough.
TODO: Add more efficient compute shader
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
* dnn/Vulkan: add a more efficient conv shader
* Python wrapper for detail
* hide pyrotationwrapper
* copy code in pyopencv_rotationwarper.hpp
* move ImageFeatures MatchInfo and CameraParams in core/misc/
* add python test for detail
* move test_detail in test_stitching
* rename
Stitching: added functions to set warp interpolation mode (#13449)
* Added functions to set warp interpolation mode
* Use InterpolationFlags enum
* Improved getter/setter naming
* Enable Javascript bindings for photo module.
1. Enable the build flag in build_js.py.
2. Append js into WRAP list of photo’s CMakefiles.txt
3. Add photo module's API into JS API whitelist (embindgen.py)
Exposing the HDR imaging part of photo module.
[TODO]
Add tests
Fix opencv/doc/js_tutorials/
* [WIP] TODO: Add tests
* Remove TonemapDurand: algorithm patented in US, so moved to opencv_contrib
* Fix ningxin's comment: expose the base class.
* Add some more simple binding tests.
Also expose process function
* videoio(librealsense): fix pipeline start with config
fix to apply pipeline settings by passing config to start.
* videoio(librealsense): add support get props
add support get some props.
* Get/Set functions for BRISK parameters, issue #11527.
Allows setting threshold and octaves parameters after creating a brisk object. These parameters do not affect the initial pattern initialization and can be changed later without re-initialization.
* Fix doc parameter name.
* Brisk get/set functions tests. Check for correct value and make tests independent of default parameter values.
* Add dummy implementations for BRISK get/set functions not to break API in case someone has overloaded the Feature2d::BRISK interface. This makes BRISK different from the other detectors/descriptors on the other hand, where get/set functions are pure virtual in the interface.
More fixes for G-API tests (#13251)
* scalar comparator and more fixes for tests
* add weighted aligned
* white space
* more white space
* Add weighted test accuracy check enabled
GAPI (fluid): optimization of Separable filter (#13221)
* GAPI (fluid): Separable filter: performance test
* GAPI (fluid): enable all performance tests
* GAPI: separable filters: alternative code for Sobel
* GAPI (fluid): hide unused old code for Sobel filter
* GAPI (fluid): especial code for Sobel if U8 into S16
* GAPI (fluid): back to old code for Sobel
* GAPI (fluid): run_sepfilter3x3_impl() with CPU dispatcher
* GAPI (fluid): run_sepfilter3x3_impl(): fix compiler warnings
* GAPI (fluid): new engine for separable filters (but Sobel)
* GAPI (fluid): new performance engine for Sobel
* GAPI (fluid): Sepfilters performance: fixed compilation error
* custom OpenCL G-API kernel draft
* clean up and warnings fix
* more warnings
* white space
* new blank line at the EOF removed
* HAVE_OPENCL guard
* remove unnecessary ocl API call
* remove sum test workaround
* check if opencl activated
* fix std::str warning
* CPU fall back for symm7x7
* gpu test kernel draft
* adjust have opencl guard
* more guards
* one more attempt to adjust guards
* empty stub files and kernel source files creation in the test directory
* try to force auto generation
* one more attempt to force build
* remove symm7x7 custom from gapi module
* looks like that this version works properly on Win desktop
* clean up
* more clean up
* address some suggestions from Dmitry's review
* const kernel coefficients
* CV_Error in kernel + try to fix cpu fallback
* CV_Error_ instead CV_Error
* everything in one gapi_gpu_test.cpp
* fix warning
* remove kernel generation, add kernel string
* avoid generated code and ocl internal namespace
* fix misprint
* c_str
* dnn/Vulkan: don't init Vulkan runtime if using other backend/target
Don't need to explictly call a init API but will automatically
init Vulkan environment the first time to use an VkCom object.
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
* dnn/Vulkan: depress compilier warning for "-Wsign-promo"
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
* Added caching of agents execution sequence
* Merged linesRead() and nextWindow() methods on FluidAgent in one method
* Added caching of input lines for fluid::View
* Added caching of output lines for fluid::Buffer
* Fixed GAPI_Assert to work in standalone mode
G-API: Doxygen class reference
* G-API Doxygen documentation: covered cv::GComputation
* G-API Doxygen documentation: added sections on compile arguments
* G-API Doxygen documentation: restructuring & more text
* Added new sections (organized API reference into it);
* Documented GCompiled, compile args, backends, etc.
* G-API Doxygen documentation: documented GKernelPackage and added group for meta
* G-API: First steps with tutorial
* G-API Tutorial: First iteration
* G-API port of anisotropic image segmentation tutorial;
* Currently works via OpenCV only;
* Some new kernels have been required.
* G-API Tutorial: added chapters on execution code, inspection, and profiling
* G-API Tutorial: make Fluid kernel headers public
For some reason, these headers were not moved to the public
headers subtree during the initial development. Somehow it even
worked for the existing workloads.
* G-API Tutorial: Fix a couple of issues found during the work
* Introduced Phase & Sqrt kernels, OCV & Fluid versions
* Extended GKernelPackage to allow kernel removal & policies on include()
All the above stuff needs to be tested, tests will be added later
* G-API Tutorial: added chapter on running Fluid backend
* G-API Tutorial: fix a number of issues in the text
* G-API Tutorial - some final updates
- Fixed post-merge issues after Sobel kernel renaming;
- Simplified G-API code a little bit;
- Put a conclusion note in text.
* G-API Tutorial - fix build issues in test/perf targets
Public headers were refactored but tests suites were not updated in time
* G-API Tutorial: Added tests & reference docs on new kernels
* Phase
* Sqrt
* G-API Tutorial: added link to the tutorial from the main module doc
* G-API Tutorial: Added tests on new GKernelPackage functionality
* G-API Tutorial: Extended InRange tests to cover 32F
* G-API Tutorial: Misc fixes
* Avoid building examples when gapi module is not there
* Added a volatile API disclaimer to G-API root documentation page
* G-API Tutorial: Fix perf tests build issue
This change came from master where Fluid kernels are still used
incorrectly.
* G-API Tutorial: Fixed channels support in Sqrt/Phase fluid kernels
Extended tests to cover this case
* G-API Tutorial: Fix text problems found on team review
cap_libv4l depends on an external library (libv4l) yet is still larger
(1966 loc vs 1822 loc).
It was initially introduced copy pasting cap_v4l in order to offload
various color conversions to libv4l.
However nowadays we handle most of the needed color conversions inside
OpenCV. Our own implementation is better tested and (probably) also
better performing. (as it can optionally leverage IPP/ OpenCL)
Currently cap_v4l is better maintained and generally the code is in
better shape. There is however an API
difference in getting unconverted frames:
* on cap_libv4l one need to set `CV_CAP_MODE_GRAY=1` or
`CV_CAP_MODE_YUYV=1`
* on cap_v4l one needs to set `CV_CAP_PROP_CONVERT_RGB=0`
the latter is more flexible though as it also allows accessing undecoded
JPEG images.
fixes#4563
[evolution] Stitching for OpenCV 4.0
* stitching: wrap Stitcher::create for bindings
* provide method for consistent stitcher usage across languages
* samples: add python stitching sample
* port cpp stitching sample to python
* stitching: consolidate Stitcher create methods
* remove Stitcher::createDefault, it returns Stitcher, not Ptr<Stitcher> -> inconsistent API
* deprecate cv::createStitcher and cv::createStitcherScans in favor of Stitcher::create
* stitching: avoid anonymous enum in Stitcher
* ORIG_RESOL should be double
* add documentatiton
* stitching: improve documentation in Stitcher
* stitching: expose estimator in Stitcher
* remove ABI hack
* stitching: drop try_use_gpu flag
* OCL will be used automatically through T-API in OCL-enable paths
* CUDA won't be used unless user sets CUDA-enabled classes manually
* stitching: drop FeaturesFinder
* use Feature2D instead of FeaturesFinder
* interoperability with features2d module
* detach from dependency on xfeatures2d
* features2d: fix compute and detect to work with UMat vectors
* correctly pass UMats as UMats to allow OCL paths
* support vector of UMats as output arg
* stitching: use nearest interpolation for resizing masks
* fix warnings
* Support for Matx read/write by FileStorage
* Only empty filestorage read now produces default Matx. Split Matx IO test into smaller units. Test checks for exception thrown if reading a Mat into a Matx of different size.
* moved DIS optical flow from opencv_contrib to opencv, moved TVL1 from opencv to opencv_contrib
* fixed compile warning
* TVL1 optical flow example moved to opencv_contrib
* significantly reduced OpenCV binary size by disabling IPP calls in some OpenCV functions: Sobel, Scharr, medianBlur, GaussianBlur, filter2D, mean, meanStdDev, norm, sum, minMaxIdx, sort.
* re-enable IPP in norm, since it's much faster (without adding too much space overhead)
* removed C API in the following modules: photo, video, imgcodecs, videoio
* trying to fix various compile errors and warnings on Windows and Linux
* continue to fix compile errors and warnings
* continue to fix compile errors, warnings, as well as the test failures
* trying to resolve compile warnings on Android
* Update cap_dc1394_v2.cpp
fix warning from the new GCC
G-API GPU-OpenCL backend (#13008)
* gpu/ocl backend core
* accuracy tests added and adjusted + license headers
* GPU perf. tests added; almost all adjusted to pass
* all tests adjusted and passed - ready for pull request
* missing license headers
* fix warning (workaround RGB2Gray)
* fix c++ magic
* precompiled header
* white spaces
* try to fix warning and blur test
* try to fix Blur perf tests
* more alignments with the latest cpu backend
* more gapi tests refactoring + 1 more UB issue fix + more informative tolerance exceed reports
* white space fix
* try workaround for SumTest
* GAPI_EXPORTS instead CV_EXPORTS
This is a workaround for GPU hang on heavy convolution workload (> 10 GFLOPS).
e.g. ResNet101_DUC_HDC
For the long time task, vkWaitForFences() return without error but next call on
vkQueueSubmit() return -4, i.e. "VK_ERROR_DEVICE_LOST" and driver reports GPU hang.
Need more investigation on root cause of GPU hang and need to optimize convolution shader
to reduce process time.
* integrated the new C++ persistence; removed old persistence; most of OpenCV compiles fine! the tests have not been run yet
* fixed multiple bugs in the new C++ persistence
* fixed raw size of the parsed empty sequences
* [temporarily] excluded obsolete applications traincascade and createsamples from build
* fixed several compiler warnings and multiple test failures
* undo changes in cocoa window rendering (that was fixed in another PR)
* fixed more compile warnings and the remaining test failures (hopefully)
* trying to fix the last little warning
G-API: Introduce new `reshape()` API (#12990)
* Moved initFluidUnits, initLineConsumption, calcLatency, calcSkew to separate functions
* Added Fluid::View::allocate method (moved allocation logic from constructor)
* Changed util::zip to util::indexed, utilized collectInputMeta in GFluidExecutable constructor
* Added makeReshape method to FluidExecutable
* Removed m_outputRoi from GFluidExecutable
* Added reshape feature
* Added switch of resize mapper if agent ratio was changed
* Added more TODOs and renamed a function
* G-API reshape(): add missing `override` specifiers
Fix warnings on all platforms
Made scale parameter optional for mul kernel wrapper (#12949)
* Added missed operator*(GMat, GMat). Made scale parameter optional for mul kernel.
* Fixed perf test for mul(GMat, GMat) kernel
* Removed operator*(GMat, GMat) as not needed
* dnn: Add a Vulkan based backend
This commit adds a new backend "DNN_BACKEND_VKCOM" and a
new target "DNN_TARGET_VULKAN". VKCOM means vulkan based
computation library.
This backend uses Vulkan API and SPIR-V shaders to do
the inference computation for layers. The layer types
that implemented in DNN_BACKEND_VKCOM include:
Conv, Concat, ReLU, LRN, PriorBox, Softmax, MaxPooling,
AvePooling, Permute
This is just a beginning work for Vulkan in OpenCV DNN,
more layer types will be supported and performance
tuning is on the way.
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
* dnn/vulkan: Add FindVulkan.cmake to detect Vulkan SDK
In order to build dnn with Vulkan support, need installing
Vulkan SDK and setting environment variable "VULKAN_SDK" and
add "-DWITH_VULKAN=ON" to cmake command.
You can download Vulkan SDK from:
https://vulkan.lunarg.com/sdk/home#linux
For how to install, see
https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.htmlhttps://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.htmlhttps://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html
respectively for linux, windows and mac.
To run the vulkan backend, also need installing mesa driver.
On Ubuntu, use this command 'sudo apt-get install mesa-vulkan-drivers'
To test, use command '$BUILD_DIR/bin/opencv_test_dnn --gtest_filter=*VkCom*'
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
* dnn/Vulkan: dynamically load Vulkan runtime
No compile-time dependency on Vulkan library.
If Vulkan runtime is unavailable, fallback to CPU path.
Use environment "OPENCL_VULKAN_RUNTIME" to specify path to your
own vulkan runtime library.
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
* dnn/Vulkan: Add a python script to compile GLSL shaders to SPIR-V shaders
The SPIR-V shaders are in format of text-based 32-bit hexadecimal
numbers, and inserted into .cpp files as unsigned int32 array.
* dnn/Vulkan: Put Vulkan headers into 3rdparty directory and some other fixes
Vulkan header files are copied from
https://github.com/KhronosGroup/Vulkan-Docs/tree/master/include/vulkan
to 3rdparty/include
Fix the Copyright declaration issue.
Refine OpenCVDetectVulkan.cmake
* dnn/Vulkan: Add vulkan backend tests into existing ones.
Also fixed some test failures.
- Don't use bool variable as uniform for shader
- Fix dispathed group number beyond max issue
- Bypass "group > 1" convolution. This should be support in future.
* dnn/Vulkan: Fix multiple initialization in one thread.
This is a fix to the signature of static function
collectCalibrationData() and clean-up for #12772. Since fallback scheme
in calibration method selection is not used anymore. As an input
parameter, iFixedPoint should be passed by value according to the OpenCV
coding style guide.
* Renamed Sobel operator GAPI kernel to match with OpenCV naming rules
* Fixed perf tests
* Small refactoring to check CI issue
* Refactored alignment for kernel wrappers in imgproc.hpp
* Update videoio.hpp
add VideoCapturePropertie for clossbar input pin setting
* Update cap_dshow.cpp
For some kind of capture card, such as "avermedia cv710 " , it use SerialDigital as input pin and so it can not work.
Here added new PhysicalConnectorType enumeration: PhysConn_Video_YRYBY and PhysConn_Video_SerialDigital to support it.
And also provide new property parameter CAP_CROSSBAR_INPIN_TYPE to set the crossbar input pin type which will be used in videoInput::start(int deviceID, videoDevice *VD):
" if(VD->useCrossbar)
{
DebugPrintOut("SETUP: Checking crossbar\n");
routeCrossbar(&VD->pCaptureGraph, &VD->pVideoInputFilter, VD->connection, CAPTURE_MODE);
}
"
And at last ,fixed one issue for function setSizeAndSubtype, added code
pVih->rcSource.top = pVih->rcSource.left = pVih->rcTarget.top =pVih->rcTarget.left=0;
pVih->rcSource.right = pVih->rcTarget.right= attemptWidth;
pVih->rcSource.bottom = pVih->rcTarget.bottom = attemptHeight;
without these code , rcSource and rcTarget will keeping use default resolution and cause fail in hr = VD->streamConf->SetFormat(VD->pAmMediaType) and cannot find suitable MediaType.
Tested with python3 and mfc (Avermedia cv710)
Python3 code:
import cv2
print("test cv")
cap=cv2.VideoCapture(0)
cap.set(5,60)
cap.set(3,1920)
cap.set(4,1080)
cap.set(31,6)
ret,img=cap.read()
cv2.namedWindow("cap",cv2.WINDOW_NORMAL)
cv2.resizeWindow("cap",960,640);
while True:
ret,img=cap.read()
if ret==False:
continue
cv2.imshow("cap",img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
MFC code:
void CcvtestDlg::OnBnClickedButton1()
{
VideoCapture cap(0);
cap.set(CAP_PROP_FRAME_WIDTH, 1920);
cap.set(CAP_PROP_FRAME_HEIGHT, 1080);
cap.set(CAP_CROSSBAR_INPIN_TYPE , 6);
Mat img;
namedWindow("test", WINDOW_NORMAL);
resizeWindow("test", 960, 640);
while (1)
{
if (cap.read(img))
{
imshow("test", img);
if ('q' ==waitKey(1))
break;
}
}
destroyAllWindows();
cap.release();
}
* Update cap_dshow.cpp
* Update videoio.hpp
move enum value of CAP_CROSSBAR_INPIN_TYPE to the end of list
* Update videoio.hpp
* Update cap_dshow.cpp
removed trailing whitespace
* Update test_camera.cpp
Add test for capture device using PhysConn_Video_SerialDigital as crossbar input pin
* Update test_camera.cpp
Correction of misunderstanding about how to add test case.
More accurate pinhole camera calibration with imperfect planar target (#12772)
43 commits:
* Add derivatives with respect to object points
Add an output parameter to calculate derivatives of image points with
respect to 3D coordinates of object points. The output jacobian matrix
is a 2Nx3N matrix where N is the number of points.
This commit introduces incompatibility to old function signature.
* Set zero for dpdo matrix before using
dpdo is a sparse matrix with only non-zero value close to major
diagonal. Set it to zero because only elements near major diagonal are
computed.
* Add jacobian columns to projectPoints()
The output jacobian matrix of derivatives with respect to coordinates of
3D object points are added. This might break callers who assume the
columns of jacobian matrix.
* Adapt test code to updated project functions
The test cases for projectPoints() and cvProjectPoints2() are updated to
fit new function signatures.
* Add accuracy test code for dpdo
* Add badarg test for dpdo
* Add new enum item for new calibration method
CALIB_RELEASE_OBJECT is used to whether to release 3D coordinates of
object points. The method was proposed in: K. H. Strobl and G. Hirzinger.
"More Accurate Pinhole Camera Calibration with Imperfect Planar Target".
In Proceedings of the IEEE International Conference on Computer Vision
(ICCV 2011), 1st IEEE Workshop on Challenges and Opportunities in Robot
Perception, Barcelona, Spain, pp. 1068-1075, November 2011.
* Add releasing object method into internal function
It's a simple extension of the standard calibration scheme. We choose to
fix the first and last object point and a user-selected fixed point.
* Add interfaces for extended calibration method
* Refine document for calibrateCamera()
When releasing object points, only the z coordinates of the
objectPoints[0].back is fixed.
* Add link to strobl2011iccv paper
* Improve documentation for calibrateCamera()
* Add implementations of wrapping calibrateCamera()
* Add checking for params of new calibration method
If input parameters are not qualified, then fall back to standard
calibration method.
* Add camera calibration method of releasing object
The current implementation is equal to or better than
https://github.com/xoox/calibrel
* Update doc for CALIB_RELEASE_OBJECT
CALIB_USE_QR or CALIB_USE_LU could be used for faster calibration with
potentially less precise and less stable in some rare cases.
* Add RELEASE_OBJECT calibration to tutorial code
To select the calibration method of releasing object points, a command
line parameter `-d=<number>` should be provided.
* Update tutorial doc for camera_calibration
If the method of releasing object points is merged into OpenCV. It will
be expected to be firstly released in 4.1, I think.
* Reduce epsilon for cornerSubPix()
Epsilon of 0.1 is a bigger one. Preciser corner positions are required
with calibration method of releasing object.
* Refine camera calibration tutorial
The hypothesis coordinates are used to indicate which distance must be
measured between two specified object points.
* Update sample calibration code method selection
Similar to camera_calibration tutorial application, a command line
argument `-dt=<number>` is used to select the calibration method.
* Add guard to flags of cvCalibrateCamera2()
cvCalibrateCamera2() doesn't accept CALIB_RELEASE_OBJECT unless overload
interface is added in the future.
* Simplify fallback when iFixedPoint is out of range
* Refactor projectPoints() to keep compatibilities
* Fix arg string "Bad rvecs header"
* Read calibration flags from test data files
Instead of being hard coded into source file, the calibration flags will
be read from test data files.
opencv_extra/testdata/cv/cameracalibration/calib?.dat must be sync with
the test code.
* Add new C interface of cvCalibrateCamera4()
With this new added C interface, the extended calibration method with
CALIB_RELEASE_OBJECT can be called by C API.
* Add regression test of extended calibration method
It has been tested with new added test data in xoox:calib-release-object
branch of opencv_extra.
* Fix assertion in test_cameracalibration.cpp
The total number of refined 3D object coordinates is checked.
* Add checker for iFixedPoint in cvCalibrateCamera4
If iFixedPoint is out of rational range, fall back to standard method.
* Fix documentation for overloaded calibrateCamera()
* Remove calibration flag of CALIB_RELEASE_OBJECT
The method selection is based on the range of the index of fixed point.
For minus values, standard calibration method will be chosen. Values in
a rational range will make the object-releasing calibration method
selected.
* Use new interfaces instead of function overload
Existing interfaces are preserved and new interfaces are added. Since
most part of the code base are shared, calibrateCamera() is now a
wrapper function of calibrateCameraRO().
* Fix exported name of calibrateCameraRO()
* Update documentation for calibrateCameraRO()
The circumstances where this method is mostly helpful are described.
* Add note on the rigidity of the calibration target
* Update documentation for calibrateCameraRO()
It is clarified that iFixedPoint is used as a switch to select
calibration method. If input data are not qualified, exceptions will be
thrown instead of fallback scheme.
* Clarify iFixedPoint as switch and remove fallback
iFixedPoint is now used as a switch for calibration method selection. No
fallback scheme is utilized anymore. If the input data are not
qualified, exceptions will be thrown.
* Add badarg test for object-releasing method
* Fix document format of sample list
List items of same level should be indented the same way. Otherwise they
will be formatted as nested lists by Doxygen.
* Add brief intro for objectPoints and imagePoints
* Sync tutorial to sample calibration code
* Update tutorial compatibility version to 4.0
* G-API Documentation: first submission
This PR introduces a number of new OpenCV documentation chapters for
Graph API module.
In particular, the following topics are covered:
- Introduction & background information;
- High-level design overview;
- Kernel API;
- Pipeline example.
All changes are done in Markdown files, no headers, etc modified.
Doxygen references for main API classes will be added later.
Also, a tutorial will be introduced soon (in the common Tutorials place)
* G-API Documentation - fix warnings & trailing whitespaces
* G-API Documentation: address review issues
* G-API Documentation: export code snippets to compileable files
* gapi: move documentation samples
* rewrote the line segment intersection function to make the static analyzer happy
* fixed bug with improper "no intersection" detection in some of corner cases
* fixed bug with improper "no intersection" detection in some of corner cases
Several Resize optimizations count on fetching multiple input lines at
once to do interpolation more efficiently.
At the moment, Fluid backend supports only LPI=1 for Resize kernels.
This patch introduces scheduling support for Resizes with LPI>1 and
covers these cases with new tests.
The support is initially written by Ruslan Garnov.
* hide use of std::mutex from /clr compilation under Visual Studio
C++11 <mutex> is not available when compiling with /clr under Visual Studio, thus opencv cannot be easily included.
It is fixed by making a CEEMutex wrapper class, around an opaque implementation using std::mutex internally
* fixed compilation outside of Visual Studio
fixed compilation outside of Visual Studio by avoiding some macros
* fixed indentation, prepare getting rid of CEEMutex/CEELockGuard
fixed indentation
After discussion, CEEMutex and CEELockGuard can be totally removed, letting the developer in a /clr context to provide his own implementation
* remove CEEMutex/CEELockGuard
* Update G-API code base to 27-Sep-18
Changes mostly improve standalone build support
* G-API code base update 28-09-2018
* Windows/Documentation warnings should be fixed
* Fixed stability issues in Fluid backend
* Fixed precompiled headers issues in G-API source files
* G-API code base update 28-09-18 EOD
* Fixed several static analysis issues
* Fixed issues found when G-API is built in a standalone mode
- avoid updating of input image during equalizeHist() call
- avoid for() with double variable (use 'int' instead)
- more CV_Check*() macros
- use Mat_<T>, Matx
- static for local variables
* G-API Initial code upload
* Update G-API code base to Sep-24-2018
* The majority of OpenCV buildbot problems was addressed
* Update G-API code base to 24-Sep-18 EOD
* G-API code base update 25-Sep-2018
* Linux warnings should be resolved
* Documentation build should become green
* Number of Windows warnings should be reduced
* Update G-API code base to 25-Sep-18 EOD
* ARMv7 build issue should be resolved
* ADE is bumped to latest version and should fix Clang builds for macOS/iOS
* Remaining Windows warnings should be resolved
* New Linux32 / ARMv7 warnings should be resolved
* G-API code base update 25-Sep-2018-EOD2
* Final Windows warnings should be resolved now
* G-API code base update 26-Sep-2018
* Fixed issues with precompiled headers in module and its tests
findChessboardCornersSB: speed improvements (#12615)
* chessboard: fix do not modify const image
* chessboard: speed up scale space using parallel_for
* chessboard: small improvements
* chessboard: speed up board growing using parallel_for
* chessboard: add flags for tuning detection
* chessboard: fix compiler warnings
* chessborad: change flag name to CALIB_CB_EXHAUSTIVE
This also fixes a typo
* chessboard: fix const ref + remove to_string
Before this fix, the code would fail if only standard deviations of
extrinsic parameters are requested. While standard deviations matrix
should be computed if any set of standard deviations is requested. A
variable is added to represent this case.
* add new chessboard detector
The chessboar detector is based on the paper.
Accurate Detection and Localization of Checkerboard Corners for
Calibration Alexander Duda, Udo Frese
British Machine Vision Conference, o.A., 2018.
It utilizes point symmetry of checkerboard corners in combination with a
localized Radon transform approximated by box filters to achieve high
performance even on large images. Here, tests have shown that the
ability to localize checkerboard corners is close to the theoretical
limit of 1/100 of a pixel while being considerably less sensitive
to image noise than standard methods.
* chessboard: add reference to bibtex file
* chessboard: add dependency to opencv_flann
* fix: test chesscorners. It is valid to return an empty list
In case no chessboard was detected it should be valid for the detector
to return an empty list.
For simplifcation, it should be allowed to return any number of corners
if they are flagged as not found.
* fix: opencv.bib remove empty lines
* fix: doc findChessboardCorners replace cvSize with cv::Size
* chessboard tests: factor out logic selecting detector
* chessboard: add unit test for findChessboardCorners2
This is includes a new chessboard generator which supports subpix
corners with high accuracy by wrapping an optimal chessboard using
wrapPerspective.
* fix: chessboard unit test - overwrite of default parameter flag of findCirclesGrid
* chessboard: remove trailing whitespace
* chessboard: fix debug drawing
* chessboard: fix some issues during code review
* chessboard: normalize asymmetric chessboard
* chessboard: fix float double warning
* remove trailing whitespace
* chessboards: fix compiler warnings
* chessboards: fix compiler warnings
* checkerboard: some performance improvements
* chessboard: remove NULL macros for language bindinges from internal headers
* chessboard: shorten license terms
* chessboard: remove unused internal method
* chessboard: set helper functions to static
* chessboard: fix normalizePoints1D using unshifted points
* chessboard: remove wrongly copied text
* chessboard: use CV_CheckTypeEQ macro
* chessboard: comment all NaN checks
* chessboard: use consistent color conversion
* chessboard: use CheckChannelEQ macro
* chessboard: assume gray color image for internal methods
* chessboard: use std::swap
* chessboard: use Mat.dataend
* chessboard: fix compiler warnings
* chessboard: replace some checks witch CV_CHECK macro
* chessboard: fix comparison function for partial sort
* chessboard: small cleanup
* chessboard: use short license header
* chessboard: rename findChessboard2 to findChessboardSB
* chessboard: fix type in unit test
* added basic support for CV_16F (the new datatype etc.). CV_USRTYPE1 is now equal to CV_16F, which may break some [rarely used] functionality. We'll see
* fixed just introduced bug in norm; reverted errorneous changes in Torch importer (need to find a better solution)
* addressed some issues found during the PR review
* restored the patch to fix some perf test failures
* bgr2gray 8u fixed to be in conformance with IPP code
* coefficients fixed so their sum is 32768
* java test for CascadeDetect fixed: equalizeHist added
fix some errors found by static analyzer. (#12391)
* fix possible divided by zero and by negative values
* only 4 elements are used in these arrays
* fix uninitialized member
* use boolean type for semantic boolean variables
* avoid invalid array index
* to avoid exception and because base64_beg is only used in this block
* use std::atomic<bool> to avoid thread control race condition
* Add HPX backend for OpenCV implementation
Adds hpx backend for cv::parallel_for_() calls respecting the nstripes chunking parameter. C++ code for the backend is added to modules/core/parallel.cpp. Also, the necessary changes to cmake files are introduced.
Backend can operate in 2 versions (selectable by cmake build option WITH_HPX_STARTSTOP): hpx (runtime always on) and hpx_startstop (start and stop the backend for each cv::parallel_for_() call)
* WIP: Conditionally include hpx_main.hpp to tests in core module
Header hpx_main.hpp is included to both core/perf/perf_main.cpp and core/test/test_main.cpp.
The changes to cmake files for linking hpx library to above mentioned test executalbles are proposed but have issues.
* Add coditional iclusion of hpx_main.hpp to cpp cpu modules
* Remove start/stop version of hpx backend
* video: remove duplicate RANSAC code
* remove RANSAC code video module. The module now uses RANSAC estimators from calib3d.
* deprecate estimateRigidTransform
* replace internal usage of deprecated estimateRigidTransform
* remove from wrappers
* replace usage in shape module. shape module now links to calib3d instead of video module.
* reprecate also C API version
* remove cvEstimateRigidTransform
* supress deprecated warnings in estimateRigidTransform test
* the function is now deprecated
* created new decoder and encoder for PFM
pfm file format stores binary RGB or grayscale float images.
* added test for pfm codec
* replaced large with short licence header
* little/big-endian-check is now compile time
* fixed width/height confusion, improved big/little endian recognition, fixed scaling issue and Improved signature check
* adapted tests to handle float images well
* removed data-dependency: lena.pfm
the lena image is now loaded is pam and converted to pfm.
* fixed bug in endianess detection macro
* Added endianess detection for android and win
* removed fancy endianess detection
endianess detection will be implemented in cmake scripts soonish.
* fixed minor warnings
* fixed stupid elif defined bug
* silenced some implicit cast warnings
* replaced std::to_string with std::stringstream solution
std::to_string variant did not build on android.
* replaced new endianess macros with existing ones
* improved readability
* a part of https://github.com/opencv/opencv/pull/11364 by Tetragramm. Rewritten and extended findNonZero & PSNR to support more types, not just 8u.
* fixed compile & doxygen warnings
* fixed small bug in findNonZero test
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* Include ELA example
* did some code cleanup
* fixed compile error
this enables the usage of current sensors, while dropping support for
legacy devices, see:
https://github.com/IntelRealSense/librealsense#overview
Given limited resources, and that the legacy sensors where not that
great, I think we should focus on v2.
If you have a question rather than reporting a bug please go to http://answers.opencv.org where you get much faster responses.
If you need further assistance please read [How To Contribute](https://github.com/opencv/opencv/wiki/How_to_contribute).
This is a template helping you to create an issue which can be processed as quickly as possible. This is the bug reporting section for the OpenCV library.
-->
##### System information (version)
<!-- Example
-OpenCV => 3.1
-OpenCV => 4.2
-Operating System / Platform => Windows 64 Bit
-Compiler => Visual Studio 2015
-Compiler => Visual Studio 2017
-->
- OpenCV => :grey_question:
@@ -27,4 +20,43 @@ This is a template helping you to create an issue which can be processed as quic
// C++ code example
```
or attach as .txt or .zip file
-->
-->
##### Issue submission checklist
- [ ] I report the issue, it's not a question
<!--
OpenCV team works with answers.opencv.org, Stack Overflow and other communities
to discuss problems. Tickets with question without real issue statement will be
closed.
-->
- [ ] I checked the problem with documentation, FAQ, open issues,
answers.opencv.org, Stack Overflow, etc and have not found solution
// assign new status and release the working thread if needed
if(new_status!=OK){
worker->status_=new_status;
// Note the associated mutex does not need to be held when signaling the
// condition. Unlocking the mutex first may improve performance in some
// implementations, avoiding the case where the waiting thread can't
// reacquire the mutex when woken.
pthread_mutex_unlock(&impl->mutex_);
pthread_cond_signal(&impl->condition_);
return;
}
}
pthread_mutex_unlock(&impl->mutex_);
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.