Tutorial for parallel_for_ and Universal Intrinsic (GSoC '21)
* New parallel_for tutorial
* Universal Intrinsics Draft Tutorial
* Added draft of universal intrinsic tutorial
* * Added final markdown for parallel_for_new
* Added first half of universal intrinsic tutorial
* Fixed warnings in documentation and sample code for parallel_for_new
tutorial
* Restored original parallel_for_ tutorial and table_of_content_core
* Minor changes
* Added demonstration of 1-D vectorized convolution
* * Added 2-D convolution implementation and tutorial
* Minor changes in vectorized implementation of 1-D and 2-D convolution
* Minor changes to univ_intrin tutorial. Added new tutorials to the table of contents
* Minor changes
* Removed variable sized array initializations
* Fixed conversion warnings
* Added doxygen references, minor fixes
* Added jpg image for parallel_for_ doc
AArch64 semihosting
* [ts] Disable filesystem support in the TS module.
Because of this change, all the tests loading data will file, but tat
least the core module can be tested with the following line:
opencv_test_core --gtest_filter=-"*Core_InputOutput*:*Core_globbing.accuracy*"
* [aarch64] Build OpenCV for AArch64 semihosting.
This patch provide a toolchain file that allows to build the library
for semihosting applications [1]. Minimal changes have been applied to
the code to be able to compile with a baremetal toolchain.
[1] https://developer.arm.com/documentation/100863/latest
The option `CV_SEMIHOSTING` is used to guard the bits in the code that
are specific to the target.
To build the code:
cmake ../opencv/ \
-DCMAKE_TOOLCHAIN_FILE=../opencv/platforms/semihosting/aarch64-semihosting.toolchain.cmake \
-DSEMIHOSTING_TOOLCHAIN_PATH=/path/to/baremetal-toolchain/bin/ \
-DBUILD_EXAMPLES=ON -GNinja
A barematel toolchain for targeting aarch64 semihosting can be found
at [2], under `aarch64-none-elf`.
[2] https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
The folder `samples/semihosting` provides two example semihosting
applications.
The two binaries can be executed on the host platform with:
qemu-aarch64 ./bin/example_semihosting_histogram
qemu-aarch64 ./bin/example_semihosting_norm
Similarly, the test and perf executables of the modules can be run
with:
qemu-aarch64 ./bin/opecv_[test|perf]_<module>
Notice that filesystem support is disabled by the toolchain file,
hence some of the test that depend on filesystem support will fail.
* [semihosting] Remove blank like at the end of file. [NFC]
The spurious blankline was reported by
https://pullrequest.opencv.org/buildbot/builders/precommit_docs/builds/31158.
* [semihosting] Make the raw pixel file generation OS independent.
Use the facilities provided by Cmake to generate the header file
instead of a shell script, so that the build doesn't fail on systems
that do not have a unix shell.
* [semihosting] Rename variable for semihosting compilation.
* [semihosting] Move the cmake configuration to a variable file.
* [semihosting] Make the guard macro private for the core module.
* [semihosting] Remove space. [NFC]
* [semihosting] Improve comment with information about semihosting. [NFC]
* [semihosting] Update license statement on top of sourvce file. [NFC]
* [semihosting] Replace BM_SUFFIX with SEMIHOSTING_SUFFIX. [NFC]
* [semihosting] Remove double space. [NFC]
* [semihosting] Add some text output to the sample applications.
* [semihosting] Remove duplicate entry in cmake configuration. [NFCI]
* [semihosting] Replace `long` with `int` in sample apps. [NFCI]
* [semihosting] Use `configure_file` to create the random pixels. [NFCI]
* [semihosting][bugfix] Fix name of cmakedefine variable.
* [semihosting][samples] Use CV_8UC1 for grayscale images. [NFCI]
* [semihosting] Add readme file.
* [semihosting] Remove blank like at the end of README. [NFC]
This fixes the failure at
https://pullrequest.opencv.org/buildbot/builders/precommit_docs/builds/31272.
without rounding the composed image sizes (variable "sz") they will be odly fractions of a pixel (e.g. (5300.965, 3772.897)) and therefore cause a "TypeError: integer argument expected, got float" in line
456 roi = warper.warpRoi(sz, K, cameras[i].R)
* Added PaddlePaddle classification model conversion case
* Modify cv2 import as cv
* Modify documents in dnn_conversion/paddlepaddle
* Modify documents in dnn_conversion/paddlepaddle
Stitching Detailed Tutorial Improvements
* Add Vertical Wave Correction
The user has the possibility to pass "vert" as wave_correct parameter. However, in the code "cv.detail.WAVE_CORRECT_HORIZ" ist fixed. This change proposes changes so that the wave correction is done vertically if the user passes "vert" as wave_correct parameter. The variable "do_wave_correct" is replaced by None which is passed to the variable "wave_correct" if the user chooses "no" for wave correction.
* Correct fixed conf_thresh
According to the documentation, [cv.detail.leaveBiggestComponent](https://docs.opencv.org/4.5.1/d7/d74/group__stitching__rotation.html#ga855d2fccbcfc3b3477b34d415be5e786) takes features, the pairwise_matches and the conf_threshold as input.
In the tutorial, however, conf_threshold is fixed at 0.3 even though the user can pass conf_thresh as parameter which is 1 by default. Fixing this parameter at 0.3 causes the script to include images into the panorama which are not part of it.
* Error Message for SURF if not implemented
In OpenCV 4.5.1
import cv2 as cv
cv.xfeatures2d_SURF.create
will not create an AttributeError, even if the function is excluded (no nonfree option)
In Line 305 (now 306) however ´finder = FEATURES_FIND_CHOICES[args.features]()´ will raise an
error: OpenCV(4.5.1) ..\opencv_contrib\modules\xfeatures2d\src\surf.cpp:1029: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SURF::create'
So we should check with cv.xfeatures2d_SURF.create() correctly if SURF is available
videoio: HW decode/encode in FFMPEG backend; new properties with support in FFMPEG/GST/MSMF
* HW acceleration in FFMPEG backend
* fixes on Windows, remove D3D9
* HW acceleration in FFMPEG backend
* fixes on Windows, remove D3D9
* improve va test
* Copyright
* check LIBAVUTIL_BUILD >= AV_VERSION_INT(55, 78, 100) // FFMPEG 3.4+
* CAP_MSMF test on .mp4
* .mp4 in test
* improve va test
* Copyright
* check LIBAVUTIL_BUILD >= AV_VERSION_INT(55, 78, 100) // FFMPEG 3.4+
* CAP_MSMF test on .mp4
* .mp4 in test
* .avi for GStreamer test
* revert changes around seek()
* cv_writer_open_with_params
* params.warnUnusedParameters
* VideoCaptureParameters in GStreamer
* open_with_params
* params->getUnused
* Reduce PSNR threshold 33->32 (other tests use 30)
* require FFMPEG 4.0+; PSNR 30 as in other tests
* GStreamer AVI-demux plugin not installed in Ubuntu test environment?
* fix build on very old ffmpeg
* fix build on very old ffmpeg
* fix build issues
* fix build issues (static_cast)
* FFMPEG built on Windows without H264 encoder?
* fix for write_nothing test on VAAPI
* fix warnings
* fix cv_writer_get_prop in plugins
* use avcodec_get_hw_frames_parameters; more robust fallback to SW codecs
* internal function hw_check_device() for device check/logging
* two separate tests for HW read and write
* image size 640x480 in encode test
* WITH_VA=ON (only .h headers used in OpenCV, no linkage dependency)
* exception on VP9 SW encoder?
* rebase master; refine info message
* videoio: fix FFmpeg standalone plugin build
* videoio(ffmpeg): eliminate MSVC build warnings
* address review comments
* videoio(hw): update videocapture_acceleration.read test
- remove parallel decoding by SW code path
- check PSNR against the original generated image
* videoio: minor fixes
* videoio(test): disable unsupported MSMF cases (SW and HW)
* videoio(test): update PSNR thresholds for HW acceleration read
* videoio(test): update debug messages
* "hw_acceleration" whitelisting parameter
* little optimization in test
* D3D11VA supports decoders, doesn't support encoders
* videoio(test): adjust PSNR threshold in write_read_position tests
* videoio(ffmpeg): fix rejecting on acceleration device name mismatch
* videoio(ffmpeg): fix compilation USE_AV_HW_CODECS=0, add more debug logging
* videoio: rework VideoAccelerationType behavior
- enum is not a bitset
- default value is backend specific
- only '_NONE' and '_ANY' may fallback on software processing
- specific H/W acceleration doesn't fallback on software processing. It fails if there is no support for specified H/W acceleration.
* videoio(test): fix for current FFmpeg wrapper
Co-authored-by: Alexander Alekhin <alexander.a.alekhin@gmail.com>
Instead of being a copy of line 76, line 79 instead correctly indicates that it will show a histogram for a gray image in curve mode, as given by the code block at line 103 referencing image "gray" instead of image "im".
Add DaSiamRPN tracker sample of c++ version
* add sample dasiamrpn_tracker of c++ version.
* samples(dasiamrpn_tracker.cpp): apply clang-format
- exclude "keys" variable
* samples(dasiamrpn_tracker.cpp): coding style and UX fixes
Scripts for downloading models in DNN samples
* Initial commit. Utility classes and functions for downloading files
* updated download script
* Support YAML parsing, update download script and configs
* Fix problem with archived files
* fix models.yml
* Move download utilities to more appropriate place
* Fix script description
* Update README
* update utilities for broader range of files
* fix loading with no hashsum provided
* remove unnecessary import
* fix for Python2
* Add usage examples for downloadFile function
* Add more secure cache folder selection
* Remove trailing whitespaces
* Fix indentation
* Update function interface
* Change function for temp dir, change entry name in models.yml
* Update getCacheDirectory function call
* Return python implementation for cache directory selection, use more specific env variable
* Fix whitespace
[GSoC] High Level API and Samples for Scene Text Detection and Recognition
* APIs and samples for scene text detection and recognition
* update APIs and tutorial for Text Detection and Recognition
* API updates:
(1) put decodeType into struct Voc
(2) optimize the post-processing of DB
* sample update:
(1) add transformation into scene_text_spotting.cpp
(2) modify text_detection.cpp with API update
* update tutorial
* simplify text recognition API
update tutorial
* update impl usage in recognize() and detect()
* dnn: refactoring public API of TextRecognitionModel/TextDetectionModel
* update provided models
update opencv.bib
* dnn: adjust text rectangle angle
* remove points ordering operation in model.cpp
* update gts of DB test in test_model.cpp
* dnn: ensure to keep text rectangle angle
- avoid 90/180 degree turns
* dnn(text): use quadrangle result in TextDetectionModel API
* dnn: update Text Detection API
(1) keep points' order consistent with (bl, tl, tr, br) in unclip
(2) update contourScore with boundingRect
Intrudeced in commit 397ba2d9aa:
add OpenCV sample for digit and text recongnition, and provide multiple OCR models.
397ba2d9aa
Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
[GSoC] Add siamrpnpp.py
* Updated base branch with siamrpnpp.py
* Addition of Parsers
* Merged to using few ONNX files, Changes to Parsers, Links to Repo
* Deleted whitespace
* Adjusting flake8 error
* Fixes according to review
* Fix according to review
* Addition of OpenVINO backends and Computation target devices
* Fix on backend after review
* Fixes after review
* Remove extra white space
* Removed Repeated Varaibles
* add the HH4 mode
* option to display disparity with a color map
* display current settings in the title bar
* don't close app when wanting to take screenshots
changed OpenCV license from BSD to Apache 2 license
* as discussed and announced earlier, changed OpenCV license from BSD to Apache 2. Many files still contain old-style copyrights though
* changed wording a bit; preserve the original OpenCV BSD license
revise default proto to match the filename in documentations
fix a bug
beautify python codes
fix bug
beautify codes
add test samples with larger/smaller size
remove unless code
using bytearray without creating tmp file
remove useless codes
Improving DaSiamRPN tracker sample
* changed layerBlobs in dnn.cpp and added DaSiamRPN tracker
* Improving DaSiamRPN tracker sample
* Docs fix
* Removed outdated changes
* Trying to reinitialize tracker without reloading models. Worked with LaSOT-based benchmark with reinit rate=250 frames
* Trying to reverse changes
* Moving the model in the constructor
* Fixing some issues with names
* Variable name changed
* Reverse parser arguments changes
* Add a FLANN example showing how to search a query image in a dataset
* Clean: remove warning
* Replace dependency to boost::filesystem by calls to core/utils/filesystem
* Wait for escape key to exit
* Add an example of binary descriptors support
* Add program options for saving and loading the flann structure
* Fix warnings on Win64
* Fix warnings on 3.4 branch still relying on C++03
* Add ctor to img_info structure
* Comments modification
* * Demo file of FLANN moved and renamed
* Fix distances type when using binary vectors in the FLANN example
* Rename FLANN example file
* Remove dependency of the flann example to opencv_contrib's SURF.
* Remove mention of FLANN and other descriptors that aimed at giving hint on the other options
* Cleaner program options management
* Make waitKey usage minimal in FLANN example
* Fix the conditions order
* Use cv::Ptr
* Implement ASIFT in C++
* '>>' should be '> >' within a nested template
* add a sample for asift usage
* bugfix empty keypoints cause crash
* simpler initialization for mask
* suppress the number of lines
* correct tex document
* type casting
* add descriptorsize for asift
* smaller testdata for asift
* more smaller test data
* add OpenCV short license header
* add text recognition sample
* fix pylint warning
* made changes according to the c++ example
* fix errors
* add text recognition sample
* update text detection sample
Objc binding
* Initial work on Objective-C wrapper
* Objective-C generator script; update manually generated wrappers
* Add Mat tests
* Core Tests
* Imgproc wrapper generation and tests
* Fixes for Imgcodecs wrapper
* Miscellaneous fixes. Swift build support
* Objective-C wrapper build/install
* Add Swift wrappers for videoio/objdetect/feature2d
* Framework build;iOS support
* Fix toArray functions;Use enum types whenever possible
* Use enum types where possible;prepare test build
* Update test
* Add test runner scripts for iOS and macOS
* Add test scripts and samples
* Build fixes
* Fix build (cmake 3.17.x compatibility)
* Fix warnings
* Fix enum name conflicting handling
* Add support for document generation with Jazzy
* Swift/Native fast accessor functions
* Add Objective-C wrapper for calib3d, dnn, ml, photo and video modules
* Remove IntOut/FloatOut/DoubleOut classes
* Fix iOS default test platform value
* Fix samples
* Revert default framework name to opencv2
* Add converter util functions
* Fix failing test
* Fix whitespace
* Add handling for deprecated methods;fix warnings;define __OPENCV_BUILD
* Suppress cmake warnings
* Reduce severity of "jazzy not found" log message
* Fix incorrect #include of compatibility header in ios.h
* Use explicit returns in subscript/get implementation
* Reduce minimum required cmake version to 3.15 for Objective-C/Swift binding
Fixes the help for `--features`, previously listed all possible values as default value.
Also adds the default value to the help for two other arguments
* fixed#17044
1. fixed Python part of the tutorial about using OpenCV XML-YAML-JSON I/O functionality from C++ and Python.
2. added startWriteStruct() and endWriteStruct() methods to FileStorage
3. modifed FileStorage::write() methods to make them work well inside sequences, not only mappings.
* try to fix the doc builder
* added Python regression test for FileStorage I/O API ([TODO] iterating through long sequences can be very slow)
* fixed yaml testing
I believe you are using the wrong version of open() on line 28 - adding deviceID + appId together. It's better to use the new version of .open() taking two integers as parameter.
Added a sample file for qrcode detection in python
* sample python file for qrcode detection added in samples/python
* input taken using argparse and the indents were removed
* Removed unused variables
* updated the format and removed unused variables
Removed the use of global variables and used parameterised contructor instead
=set multi detection true by default
* added detection from camera
* samples(python): coding style in qrcode.py
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
* 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
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
* 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