All notable changes to the VL.OpenCV repository will be documented in this file.
The format is based on Keep a Changelog.
- Moved .Conversion.FromImage to .Source
- Moved .Conversion.ToImage to .Sink
- Moved .Conversion .ToValues to .Sink
- Removed Experimental from FacemarkDetector
- Transformation conversions between OpenCV and Stride were simplified by removing redundant rotations from Stride to OpenCV and back to Stride space. Patches using calibration nodes like SolvePnP and Aruco detectors require therefore less nodes and calculations. (breaking change)
- ExtrinsicsToViewMatrix is now marked as obsolete
- ExtrinsicsToStrideMatrix replaces the former. Some patches that originally had an explicit requirement to convert transformations from Stride to OpenCV space might now work without this
- The following helppatches were changed:
- "Tutorial Calculate a camera position using [Aruco|SolvePnP]" are now called "Tutorial Calculate a pose using [Aruco|SolvePnP]". Both show application of detected pose to a camera view or alternatively to an object transform.
- Tutorial Calibrate and Reproject
- Example AR Water Molecule
- HowTo Estimate the pose of Aruco markers
- Updated help text on VideoIn node
- Updated AR water molecule help patch
- Added note to Calibrate projector and reproject help patch
- Camera calibration tool example help patch in Calibration category
- AR Water molecule help patch in Detection category
- Sample calibration file for 1280x720 resolution
- .Utils.Advanced.FromInternalMat node
- .Utils.Advanced.GetInternalMat node
- VideoIn now has a 'Default' enum entry which points to the first camera detected
- Help patches have been reorganized
- VideoIn and related nodes have been refactored
- Removed Reactive version (breaking change)
- Merged blocking and non blocking versions (breaking change)
- Refactored internal nodes
- VideoIn now uses DSHOW as the default backend
- VideoIn Index no longer reports supported formats since they are backend dependent
- Input and output pins have been renamed to match other video input libraries (breaking change)
- Default Preferred Size is now 1280x720
- VideoPlayer (Blocking) was refactored and renamed to VideoReader (breaking change)
- Resize (Width Height) was renamed to Resize (breaking change)
- All nodes that had separate integer Width and Height or similar inputs and outputs have been refactored to use Int2 instead, this affect the following nodes:
- .Calibration
- BoardCorners (breaking change)
- FindChessboardCornersSB (breaking change)
- FindChessboardCorners (breaking change)
- CalibrateProjector (breaking change)
- CalibrateCamera (breaking change)
- CalibrationMatrixValues (breaking change)
- .Drawing
- DrawChessboardCorners (breaking change)
- .Filter
- Blur (breaking change)
- GaussianBlur (breaking change)
- Resize (breaking change)
- .Sink
- VideoWriter (Append) (breaking change)
- VideoWriter (breaking change)
- .Transform
- PixelToNormalizedSpace (breaking change)
- Perspective (RH) (breaking change)
- IntrinsicsToProjectionMatrix (breaking change)
- .Source
- VideoIn (breaking change)
- CvImage (breaking change)
- CvImage (RGBA) (breaking change)
- CvImage (Array) (breaking change)
- .Utils
- Info (breaking change)
- .Calibration
- All help patches using any of the affected nodes above have been updated to match the new node signatures
- OpenPoseDetector, YOLODetector and YOLO3Detector nodes have been marked Obsolete, MediaPipe is the way
- Tooltips now show default CvImages
- VideoIn device listing and SupportedVideoFormats cleaned up and improved, all distinct video input devices for both DSHOW and MediaFoundation will now appear on the device selection enum
- Expose ConvertColor's Cahce region's Force pin as optional for odd cases where the Cache region fails to detect changes (Spout source)
- All help patches that require external resources (OpenPose, YOLO, etc) now have helper nodes to automagically download the necessary resources
- The following nodes in .Utils.Advanced have been moved to .Utils.Internal:
- EnforceGrayDefault (breaking change)
- IsDamon (breaking change)
- CvImage forward (breaking change)
- PooledQueue (breaking change)
- Clone (breaking change)
- Image (breaking change)
- Image (Rows Cols Format) (breaking change)
- ImageQueue (breaking change)
- CopyToAndReturn (breaking change)
- GetMatTypeFromEnum (breaking change)
- GetPixelAsFloats (breaking change)
- MatSerializer (breaking change)
- CvImageSerializer (breaking change)
- .Source ImageReader (Reactive) moved to .Source.Advanced (breaking change)
- VideoPlayer and VideoPlayer (Experimental) marked obsolete
- The following nodes in .Conversion were moved to .Conversion.Advanced:
- ToRGBA (BGR) (breaking change)
- ToRGBA (RGB) (breaking change)
- ToRGBA (BGRA) (breaking change)
- FromChannelsToColumns (breaking change)
- ToValues (Custom) (breaking change)
- Renderer no longer interpolates small images producing gradient artifacts
- Renderer can now more accurately scale down and represent small resolution images
- All calibration related help patches are now using FindChessboardCorners instead of FindChessboardCornersSB due to a bug that reverts the order of the detected corners
- FindChessboardCorners no longer throws exception when receiving default values
- FrameDelay no longer throws exception when receiving default values
- FrameDifference no longer throws exception when receiving default values
- OpticalFlow no longer throws exception when receiving default values
- Reference Drawing nodes help patch
- Reference Available filters help patch
- VideoIn (Reactive) (breaking change)
- SupportedVideoFormats (Index) (breaking change)
- Link to vvvTV OpenCV episode
- Remove unused files
- Nuget icon issue
- Restored missing VL.OpenCV.dll file
- Fixed corrupt nuget icon file
- Fix path in exported dll
- Upgraded project to .net 8
- All vvvv beta related files and dependencies
- MorphologyEx filter node
- Bilateral filter node
- Exposed Kernel Shape, Kernel Size and Border Type in Erode and Dilate filters
- Exposed Convert RGB pin in all VideoIn variants (including Index ones)
- HowTo Recognize Faces help patch (thanks untone)
- FrameDifferenc(FilterEquals) node and help patch
- Yolo3Detector with non-maximum suppression and help patch
- Face Detector with Caffe Model and help patch
- Added S+H (OpenCV) node and help patch
Big thanks to dani217s for these additions!
- Help patches were cleaned up and reference links updated
- Aruco MarkerWriter
- DrawArucoMarker
- MarkerDetector
- MarkerDiamondDetector
- Ridge filter
- OCR Text Detection node (thanks sebl)
- HowTo Detect text using OCR help patch (thanks sebl)
- OpenCVSharp updated from version 4.5.5.20211231 to 4.9.0.20240103
- Improved DrawChessboard node's performance
- Exposed Dicitonary IOBox in Tutorial Calculate a camera position using Aruco to prevent mismatch issues
- Removed modified VideoIn input pin from Tutorial Calculate a camera position using SolvePnP
- Teamcity's nuget source now uses https
- HowTo Draw OpenCV in Skia help patch (thanks untone)
- Updated Contributing section in README.md
- Serialization exception in VideoWriter
- Add OpenCvSharp4.Extensions reference
- Improve Renderer's ImageID calculation performance and reliability
- Update SharpDX.MediaFoundation version from 4.0.1 to 4.2.0
- Update OpenCvSharp4 references from 4.5.3.20210725 to 4.5.5.20211231
- Update VL.Core reference from 2020.2.1 to 2021.4.8
- Replace nodes marked as obsolete
- Help patch cleanup and obsolete node removal
- Ridge filter
- MarkerDiamondDetector (Experimental)
- OpenCVSharp updated from version 4.5.3.20210725 to 4.5.5.20211231
- Updated "HowTo Estimate the pose of Aruco markers"
- Renderer now properly calculates imageID for square images (again)
- Fixed IntrinsicsReader to not return bogus results if file was not read
- Fixed Undistort node not to crash in case it receives a 0x0 mat as Intrinsics input
- Fixed for help-patch removing obsolete pin on Camera node
- Renderer "Show Cursor" pin
- Renderer now properly calculates imageID for square images
- Apply pin in (Scalar) fitler nodes now work as expected
- Thinning node to achieve a skeletization of the input image
- QRCodeDetector can now detect multiple QR codes
- EstimatePose now checks for valid Intrinsics input
- VideoIn "Video Acceleration" and "Hardware Device Index" input pins
- Facemark detector (thanks sebescudie!)
- CvImage type help patch
- Create an image from scratch help patch
- Intrisics help patch
- Update OpenCVSharp dependency to version 4.5.3.20210725
- General cleanup
- Fix Resize (Scale) final dimensions smaller than 1x1 bug