From 89935505745e238df0758cee0afe0468c56499e6 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 21 Mar 2021 19:04:50 +0900 Subject: [PATCH 001/340] add RidgeFilter c++ wrapper --- .../OpenCvSharpExtern.vcxproj | 1 + .../OpenCvSharpExtern.vcxproj.filters | 3 ++ .../ximgproc_RidgeDetectionFilter.h | 28 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h diff --git a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj index c765990bd..4570cc237 100644 --- a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj +++ b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj @@ -345,6 +345,7 @@ copy "$(SolutionDir)opencv_files\opencv451_win_x64\x64\vc16\bin\opencv_videoio_f + diff --git a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj.filters b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj.filters index 2376a4adf..483c9b848 100644 --- a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj.filters +++ b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj.filters @@ -363,6 +363,9 @@ Header Files\shape + + Header Files\ximgproc + diff --git a/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h b/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h new file mode 100644 index 000000000..64be5091d --- /dev/null +++ b/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h @@ -0,0 +1,28 @@ +#pragma once + +#include "include_opencv.h" + +CVAPI(ExceptionStatus) ximgproc_RidgeDetectionFilter_create( + int ddepth, int dx, int dy, int ksize, int out_dtype, double scale, double delta, int borderType, + cv::Ptr **returnValue) +{ + BEGIN_WRAP + auto obj = cv::ximgproc::RidgeDetectionFilter::create( + ddepth, dx, dy, ksize, out_dtype, scale, delta, borderType); + *returnValue = clone(obj); + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_Ptr_RidgeDetectionFilter_delete(cv::Ptr *obj) +{ + BEGIN_WRAP + delete obj; + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_Ptr_RidgeDetectionFilter_get(cv::Ptr *ptr, cv::ximgproc::RidgeDetectionFilter **returnValue) +{ + BEGIN_WRAP + *returnValue = ptr->get(); + END_WRAP +} From c8f0a4ebceb747188af56723d78251e0e35d22e3 Mon Sep 17 00:00:00 2001 From: shimat Date: Thu, 25 Mar 2021 08:13:17 +0900 Subject: [PATCH 002/340] Add RidgeDetectionFilter --- ...veMethods_ximgproc_RidgeDetectionFilter.cs | 30 +++++ .../Modules/core/Struct/MatType.cs | 46 +++++++- .../Modules/ximgproc/RidgeDetectionFilter.cs | 105 ++++++++++++++++++ src/OpenCvSharpExtern/ximgproc.cpp | 1 + .../ximgproc_RidgeDetectionFilter.h | 9 ++ test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs | 10 +- .../ximgproc/RidgeDetectionFilterTest.cs | 22 ++++ 7 files changed, 217 insertions(+), 6 deletions(-) create mode 100644 src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc_RidgeDetectionFilter.cs create mode 100644 src/OpenCvSharp/Modules/ximgproc/RidgeDetectionFilter.cs create mode 100644 test/OpenCvSharp.Tests/ximgproc/RidgeDetectionFilterTest.cs diff --git a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc_RidgeDetectionFilter.cs b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc_RidgeDetectionFilter.cs new file mode 100644 index 000000000..e0ddd22d5 --- /dev/null +++ b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc_RidgeDetectionFilter.cs @@ -0,0 +1,30 @@ +using System; +using System.Diagnostics.Contracts; +using System.Runtime.InteropServices; + +// ReSharper disable InconsistentNaming + +#pragma warning disable 1591 +#pragma warning disable CA1401 // P/Invokes should not be visible +#pragma warning disable IDE1006 // Naming style + +namespace OpenCvSharp.Internal +{ + static partial class NativeMethods + { + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_RidgeDetectionFilter_create( + int ddepth, int dx, int dy, int ksize, int out_dtype, double scale, double delta, int borderType, + out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_RidgeDetectionFilter_getRidgeFilteredImage( + IntPtr obj, IntPtr _img, IntPtr @out); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_Ptr_RidgeDetectionFilter_delete(IntPtr obj); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_Ptr_RidgeDetectionFilter_get(IntPtr ptr, out IntPtr returnValue); + } +} \ No newline at end of file diff --git a/src/OpenCvSharp/Modules/core/Struct/MatType.cs b/src/OpenCvSharp/Modules/core/Struct/MatType.cs index e6e768f1b..12a18f375 100644 --- a/src/OpenCvSharp/Modules/core/Struct/MatType.cs +++ b/src/OpenCvSharp/Modules/core/Struct/MatType.cs @@ -213,7 +213,51 @@ public static readonly MatType CV_64FC2 = CV_64FC(2), CV_64FC3 = CV_64FC(3), CV_64FC4 = CV_64FC(4); - + /* + public const int + CV_8UC1 = 0, + CV_8SC1 = 1, + CV_16UC1 = 2, + CV_16SC1 = 3, + CV_32SC1 = 4, + CV_32FC1 = 5, + CV_64FC1 = 6, + CV_8UC2 = 8, + CV_8SC2 = 9, + CV_16UC2 = 10, + CV_16SC2 = 11, + CV_32SC2 = 12, + CV_32FC2 = 13, + CV_64FC2 = 14, + CV_8UC3 = 16, + CV_8SC3 = 17, + CV_16UC3 = 18, + CV_16SC3 = 19, + CV_32SC3 = 20, + CV_32FC3 = 21, + CV_64FC3 = 22, + CV_8UC4 = 24, + CV_8SC4 = 25, + CV_16UC4 = 26, + CV_16SC4 = 27, + CV_32SC4 = 28, + CV_32FC4 = 29, + CV_64FC4 = 30, + CV_8UC5 = 32, + CV_8SC5 = 33, + CV_16UC5 = 34, + CV_16SC5 = 35, + CV_32SC5 = 36, + CV_32FC5 = 37, + CV_64FC5 = 38, + CV_8UC6 = 40, + CV_8SC6 = 41, + CV_16UC6 = 42, + CV_16SC6 = 43, + CV_32SC6 = 44, + CV_32FC6 = 45, + CV_64FC6 = 46; + */ public static MatType CV_8UC(int ch) { diff --git a/src/OpenCvSharp/Modules/ximgproc/RidgeDetectionFilter.cs b/src/OpenCvSharp/Modules/ximgproc/RidgeDetectionFilter.cs new file mode 100644 index 000000000..ced448f32 --- /dev/null +++ b/src/OpenCvSharp/Modules/ximgproc/RidgeDetectionFilter.cs @@ -0,0 +1,105 @@ +using System; +using OpenCvSharp.Internal; + +namespace OpenCvSharp +{ + /// + /// Applies Ridge Detection Filter to an input image. + /// + /// Implements Ridge detection similar to the one in [Mathematica](http://reference.wolfram.com/language/ref/RidgeFilter.html) + /// using the eigen values from the Hessian Matrix of the input image using Sobel Derivatives. + /// Additional refinement can be done using Skeletonization and Binarization. Adapted from @cite segleafvein and @cite M_RF + /// + public class RidgeDetectionFilter : Algorithm + { + private Ptr? ptrObj; + + /// + /// Constructor + /// + protected RidgeDetectionFilter(IntPtr p) + { + ptrObj = new Ptr(p); + ptr = ptrObj.Get(); + } + + /// + /// Create pointer to the Ridge detection filter. + /// + /// Specifies output image depth. Defualt is CV_32FC1 + /// Order of derivative x, default is 1 + /// Order of derivative y, default is 1 + /// Sobel kernel size , default is 3 + /// Converted format for output, default is CV_8UC1 + /// Optional scale value for derivative values, default is 1 + /// Optional bias added to output, default is 0 + /// Pixel extrapolation method, default is BORDER_DEFAULT + /// + public static RidgeDetectionFilter Create( + MatType? ddepth = null, + int dx = 1, + int dy = 1, + int ksize = 3, + MatType? outDtype = null, + double scale = 1, + double delta = 0, + BorderTypes borderType = BorderTypes.Default) + { + var ddepthValue = ddepth.GetValueOrDefault(MatType.CV_32FC1); + var outDtypeValue = outDtype.GetValueOrDefault(MatType.CV_8UC1); + + NativeMethods.HandleException( + NativeMethods.ximgproc_RidgeDetectionFilter_create( + ddepthValue, dx, dy, ksize, + outDtypeValue, scale, delta, (int)borderType, + out var ptr)); + + return new RidgeDetectionFilter(ptr); + } + + /// + /// Releases managed resources + /// + protected override void DisposeManaged() + { + ptrObj?.Dispose(); + ptrObj = null; + base.DisposeManaged(); + } + + /// + /// Apply Ridge detection filter on input image. + /// + /// InputArray as supported by Sobel. img can be 1-Channel or 3-Channels. + /// OutputAray of structure as RidgeDetectionFilter::ddepth. Output image with ridges. + public virtual void GetRidgeFilteredImage(InputArray img, OutputArray @out) + { + ThrowIfDisposed(); + NativeMethods.HandleException( + NativeMethods.ximgproc_RidgeDetectionFilter_getRidgeFilteredImage(ptr, img.CvPtr, @out.CvPtr)); + GC.KeepAlive(this); + } + + internal class Ptr : OpenCvSharp.Ptr + { + public Ptr(IntPtr ptr) : base(ptr) + { + } + + public override IntPtr Get() + { + NativeMethods.HandleException( + NativeMethods.ximgproc_Ptr_RFFeatureGetter_get(ptr, out var ret)); + GC.KeepAlive(this); + return ret; + } + + protected override void DisposeUnmanaged() + { + NativeMethods.HandleException( + NativeMethods.ximgproc_Ptr_RFFeatureGetter_delete(ptr)); + base.DisposeUnmanaged(); + } + } + } +} diff --git a/src/OpenCvSharpExtern/ximgproc.cpp b/src/OpenCvSharpExtern/ximgproc.cpp index d0599bd7c..a50104c9d 100644 --- a/src/OpenCvSharpExtern/ximgproc.cpp +++ b/src/OpenCvSharpExtern/ximgproc.cpp @@ -3,6 +3,7 @@ #include "ximgproc_EdgeBoxes.h" #include "ximgproc_EdgeFilter.h" #include "ximgproc_FastLineDetector.h" +#include "ximgproc_RidgeDetectionFilter.h" #include "ximgproc_Segmentation.h" #include "ximgproc_StructuredEdgeDetection.h" #include "ximgproc_SuperPixel.h" \ No newline at end of file diff --git a/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h b/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h index 64be5091d..c2d5cf871 100644 --- a/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h +++ b/src/OpenCvSharpExtern/ximgproc_RidgeDetectionFilter.h @@ -13,6 +13,15 @@ CVAPI(ExceptionStatus) ximgproc_RidgeDetectionFilter_create( END_WRAP } +CVAPI(ExceptionStatus) ximgproc_RidgeDetectionFilter_getRidgeFilteredImage( + cv::ximgproc::RidgeDetectionFilter *obj, + cv::_InputArray *_img, cv::_OutputArray *out) +{ + BEGIN_WRAP + obj->getRidgeFilteredImage(*_img, *out); + END_WRAP +} + CVAPI(ExceptionStatus) ximgproc_Ptr_RidgeDetectionFilter_delete(cv::Ptr *obj) { BEGIN_WRAP diff --git a/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs b/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs index ff49f1136..2f847793d 100644 --- a/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs +++ b/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs @@ -12,8 +12,8 @@ public class ImgProcTest : TestBase [Fact] public void MorphologyExDilate() { - using Mat src = new Mat(100, 100, MatType.CV_8UC1, 255); - using Mat dst = new Mat(); + using var src = new Mat(100, 100, MatType.CV_8UC1, 255); + using var dst = new Mat(); Cv2.Rectangle(src, new Rect(30, 30, 40, 40), Scalar.Black, 1); Cv2.MorphologyEx(src, dst, MorphTypes.Dilate, null); @@ -25,8 +25,8 @@ public void MorphologyExDilate() [Fact] public void MorphologyExErode() { - using Mat src = Mat.Zeros(100, 100, MatType.CV_8UC1); - using Mat dst = new Mat(); + using var src = Mat.Zeros(100, 100, MatType.CV_8UC1); + using var dst = new Mat(); Cv2.Rectangle(src, new Rect(30, 30, 40, 40), Scalar.White, 1); Cv2.MorphologyEx(src, dst, MorphTypes.Erode, null); @@ -398,7 +398,7 @@ public void RotatedRectangleIntersectionVector() if (Debugger.IsAttached) { - Point[] ToPoints(IEnumerable enumerable) + static Point[] ToPoints(IEnumerable enumerable) { return enumerable.Select(p => new Point(p.X, p.Y)).ToArray(); } diff --git a/test/OpenCvSharp.Tests/ximgproc/RidgeDetectionFilterTest.cs b/test/OpenCvSharp.Tests/ximgproc/RidgeDetectionFilterTest.cs new file mode 100644 index 000000000..fc2840a73 --- /dev/null +++ b/test/OpenCvSharp.Tests/ximgproc/RidgeDetectionFilterTest.cs @@ -0,0 +1,22 @@ +using System.Diagnostics; +using Xunit; + +namespace OpenCvSharp.Tests.XImgProc +{ + public class RidgeDetectionFilterTest + { + [Fact] + public void Test() + { + using var filter = RidgeDetectionFilter.Create(); + using var src = new Mat("_data/image/mandrill.png"); + using var dst = new Mat(); + filter.GetRidgeFilteredImage(src, dst); + + if (Debugger.IsAttached) + { + Window.ShowImages(src, dst); + } + } + } +} From 7be49f7b6ed63401e0678489753e3e69bfc557ec Mon Sep 17 00:00:00 2001 From: shimat Date: Sat, 27 Mar 2021 22:47:29 +0900 Subject: [PATCH 003/340] Add some capture properties --- .../videoio/Enum/VideoCaptureProperties.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs b/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs index c330f928d..2f070bc9c 100644 --- a/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs +++ b/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs @@ -242,6 +242,26 @@ public enum VideoCaptureProperties /// WBTemperature = 45, + /// + /// (read-only) codec's pixel format. 4-character code - see VideoWriter::fourcc . Subset of [AV_PIX_FMT_*](https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/raw.c) or -1 if unknown + /// + CodecPixelFormat = 46, + + /// + /// (read-only) Video bitrate in kbits/s + /// + BitRate = 47, + + /// + /// (read-only) Frame rotation defined by stream meta (applicable for FFmpeg back-end only) + /// + OrientationMeta = 48, + + /// + /// if true - rotates output frames of CvCapture considering video file's metadata (applicable for FFmpeg back-end only) (https://github.com/opencv/opencv/issues/15499) + /// + OrientationAuto = 49, + #endregion #region OpenNI From 412d57150036abe0956c9bedf0f36c5c5fb0b76e Mon Sep 17 00:00:00 2001 From: shimat Date: Sat, 3 Apr 2021 09:59:16 +0900 Subject: [PATCH 004/340] added ximgproc run_length wrapper --- src/OpenCvSharpExtern/my_types.h | 9 +++++ src/OpenCvSharpExtern/ximgproc.h | 65 ++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/src/OpenCvSharpExtern/my_types.h b/src/OpenCvSharpExtern/my_types.h index 06886aafe..2604d622b 100644 --- a/src/OpenCvSharpExtern/my_types.h +++ b/src/OpenCvSharpExtern/my_types.h @@ -231,6 +231,15 @@ static cv::Point2d cpp(const MyCvPoint2D64f &p) return cv::Point2d(p.x, p.y); } +static MyCvPoint3D32i c(const cv::Point3i &p) +{ + return { p.x, p.y, p.z }; +} +static cv::Point3i cpp(const MyCvPoint3D32i &p) +{ + return cv::Point3i(p.x, p.y, p.z); +} + static MyCvPoint3D64f c(const cv::Point3d &p) { return { p.x, p.y, p.z }; diff --git a/src/OpenCvSharpExtern/ximgproc.h b/src/OpenCvSharpExtern/ximgproc.h index e1a30a386..e84683e61 100644 --- a/src/OpenCvSharpExtern/ximgproc.h +++ b/src/OpenCvSharpExtern/ximgproc.h @@ -175,6 +175,71 @@ CVAPI(ExceptionStatus) ximgproc_PeiLinNormalization_OutputArray(cv::_InputArray END_WRAP } +// run_length_morphology.hpp + +CVAPI(ExceptionStatus) ximgproc_rl_threshold(InputArray src, OutputArray rlDest, double thresh, int type); + + +CVAPI(ExceptionStatus) ximgproc_rl_dilate( + cv::_InputArray *rlSrc, cv::_OutputArray *rlDest, cv::_InputArray *rlKernel, MyCvPoint anchor) +{ + BEGIN_WRAP + cv::ximgproc::rl::dilate(*rlSrc, *rlDest, *rlKernel, cpp(anchor)); + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_rl_erode( + cv::_InputArray *rlSrc, cv::_OutputArray *rlDest, cv::_InputArray *rlKernel, + int bBoundaryOn, MyCvPoint anchor) +{ + BEGIN_WRAP + cv::ximgproc::rl::erode(*rlSrc, *rlDest, *rlKernel, bBoundaryOn != 0, cpp(anchor)); + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_rl_getStructuringElement(int shape, MyCvSize ksize, cv::Mat *outValue) +{ + BEGIN_WRAP + auto result = cv::ximgproc::rl::getStructuringElement(shape, cpp(ksize)); + result.copyTo(*outValue); + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_rl_paint(cv::_InputOutputArray *image, cv::_InputArray *rlSrc, MyCvScalar value) +{ + BEGIN_WRAP + cv::ximgproc::rl::paint(*image, *rlSrc, cpp(value)); + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_rl_isRLMorphologyPossible(cv::_InputArray *rlStructuringElement, int *outValue) +{ + BEGIN_WRAP + *outValue = cv::ximgproc::rl::isRLMorphologyPossible(*rlStructuringElement) ? 1 : 0; + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_rl_createRLEImage(MyCvPoint3D32i *runs, size_t runsLength, cv::_OutputArray *res, MyCvSize size) +{ + BEGIN_WRAP + std::vector runsVec(runsLength); + for (size_t i = 0; i < runsLength; i++) + { + runsVec[i] = cpp(runs[i]); + } + cv::ximgproc::rl::createRLEImage(runsVec, *res, cpp(size)); + END_WRAP +} + +CVAPI(ExceptionStatus) ximgproc_rl_morphologyEx( + cv::_InputArray *rlSrc, cv::_OutputArray *rlDest, int op, cv::_InputArray *rlKernel, + int bBoundaryOnForErosion, MyCvPoint anchor) +{ + BEGIN_WRAP + cv::ximgproc::rl::morphologyEx(*rlSrc, *rlDest, op, *rlKernel, bBoundaryOnForErosion != 0, cpp(anchor)); + END_WRAP +} + // weighted_median_filter.hpp CVAPI(ExceptionStatus) ximgproc_weightedMedianFilter( From 3fb4858e13910c24580571cc1724d165b5735b76 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 4 Apr 2021 17:20:22 +0900 Subject: [PATCH 005/340] 4.5.2 --- .github/workflows/macos10.yml | 2 +- .github/workflows/ubuntu18.yml | 2 +- .github/workflows/windows.yml | 2 +- download_opencv_windows.ps1 | 4 +-- .../OpenCvSharpExtern.vcxproj | 28 ++++++++--------- .../uwpOpenCvSharpExtern.vcxproj | 30 +++++++++---------- 6 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/macos10.yml b/.github/workflows/macos10.yml index 34fc6376a..e87bb6b33 100644 --- a/.github/workflows/macos10.yml +++ b/.github/workflows/macos10.yml @@ -9,7 +9,7 @@ on: env: DEBIAN_FRONTEND: noninteractive - OPENCV_VERSION: 4.5.1 + OPENCV_VERSION: 4.5.2 jobs: build: diff --git a/.github/workflows/ubuntu18.yml b/.github/workflows/ubuntu18.yml index cfeee5fd9..7ee822491 100644 --- a/.github/workflows/ubuntu18.yml +++ b/.github/workflows/ubuntu18.yml @@ -9,7 +9,7 @@ on: env: DEBIAN_FRONTEND: noninteractive - OPENCV_VERSION: 4.5.1 + OPENCV_VERSION: 4.5.2 jobs: build: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4079e8ad8..782411d62 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -8,7 +8,7 @@ on: - master env: - OPENCV_VERSION: 4.5.1 + OPENCV_VERSION: 4.5.2 jobs: build: diff --git a/download_opencv_windows.ps1 b/download_opencv_windows.ps1 index d1b4e7cbf..7bbf0c711 100644 --- a/download_opencv_windows.ps1 +++ b/download_opencv_windows.ps1 @@ -1,5 +1,5 @@ -$tag = "4.5.1.20201228" -$version = "451" +$tag = "4.5.2.20210404" +$version = "452" $uriArray =@( "https://github.com/shimat/opencv_files/releases/download/${tag}/opencv${version}_win_x64.zip" "https://github.com/shimat/opencv_files/releases/download/${tag}/opencv${version}_win_x86.zip" diff --git a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj index 4570cc237..f430fe433 100644 --- a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj +++ b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj @@ -79,14 +79,14 @@ $(SolutionDir)src\$(Configuration)\$(PlatformName)\ src\$(Platform)\$(Configuration)\ false - $(SolutionDir)\opencv_files\opencv451_win_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_win_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_win_x64\x64\vc16\staticlib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv451_win_x64\x64\vc16\staticlib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x64-windows-static\lib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv451_win_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_win_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_win_x86\x86\vc16\staticlib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x86-windows-static\lib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv451_win_x86\x86\vc16\staticlib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_win_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_win_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_win_x64\x64\vc16\staticlib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_win_x64\x64\vc16\staticlib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x64-windows-static\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_win_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_win_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_win_x86\x86\vc16\staticlib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x86-windows-static\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_win_x86\x86\vc16\staticlib;$(LibraryPath) @@ -164,7 +164,7 @@ true - ade.lib;IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco451.lib;opencv_bgsegm451.lib;opencv_bioinspired451.lib;opencv_calib3d451.lib;opencv_ccalib451.lib;opencv_core451.lib;opencv_dnn451.lib;opencv_dnn_superres451.lib;opencv_dnn_objdetect451.lib;opencv_dpm451.lib;opencv_face451.lib;opencv_features2d451.lib;opencv_flann451.lib;opencv_fuzzy451.lib;opencv_hfs451.lib;opencv_highgui451.lib;opencv_imgcodecs451.lib;opencv_imgproc451.lib;opencv_img_hash451.lib;opencv_line_descriptor451.lib;opencv_ml451.lib;opencv_objdetect451.lib;opencv_optflow451.lib;opencv_phase_unwrapping451.lib;opencv_photo451.lib;opencv_plot451.lib;opencv_quality451.lib;opencv_reg451.lib;opencv_rgbd451.lib;opencv_saliency451.lib;opencv_shape451.lib;opencv_stereo451.lib;opencv_stitching451.lib;opencv_structured_light451.lib;opencv_superres451.lib;opencv_surface_matching451.lib;opencv_text451.lib;opencv_tracking451.lib;opencv_video451.lib;opencv_videoio451.lib;opencv_videostab451.lib;opencv_xfeatures2d451.lib;opencv_ximgproc451.lib;opencv_xobjdetect451.lib;opencv_xphoto451.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) + IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco452.lib;opencv_bgsegm452.lib;opencv_bioinspired452.lib;opencv_calib3d452.lib;opencv_ccalib452.lib;opencv_core452.lib;opencv_dnn452.lib;opencv_dnn_superres452.lib;opencv_dnn_objdetect452.lib;opencv_dpm452.lib;opencv_face452.lib;opencv_features2d452.lib;opencv_flann452.lib;opencv_fuzzy452.lib;opencv_hfs452.lib;opencv_highgui452.lib;opencv_imgcodecs452.lib;opencv_imgproc452.lib;opencv_img_hash452.lib;opencv_line_descriptor452.lib;opencv_ml452.lib;opencv_objdetect452.lib;opencv_optflow452.lib;opencv_phase_unwrapping452.lib;opencv_photo452.lib;opencv_plot452.lib;opencv_quality452.lib;opencv_reg452.lib;opencv_rgbd452.lib;opencv_saliency452.lib;opencv_shape452.lib;opencv_stereo452.lib;opencv_stitching452.lib;opencv_structured_light452.lib;opencv_superres452.lib;opencv_surface_matching452.lib;opencv_text452.lib;opencv_tracking452.lib;opencv_video452.lib;opencv_videoio452.lib;opencv_videostab452.lib;opencv_xfeatures2d452.lib;opencv_ximgproc452.lib;opencv_xobjdetect452.lib;opencv_xphoto452.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) %(IgnoreSpecificDefaultLibraries) true NotSet @@ -179,8 +179,8 @@ copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\$(TargetFileName)" copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\$(TargetFileName)" -copy "$(SolutionDir)opencv_files\opencv451_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg451.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\opencv_videoio_ffmpeg451.dll" -copy "$(SolutionDir)opencv_files\opencv451_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg451.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg451.dll" +copy "$(SolutionDir)opencv_files\opencv452_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg452.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\opencv_videoio_ffmpeg452.dll" +copy "$(SolutionDir)opencv_files\opencv452_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg452.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg452.dll" @@ -207,7 +207,7 @@ copy "$(SolutionDir)opencv_files\opencv451_win_x86\x86\vc16\bin\opencv_videoio_f true - ade.lib;IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco451.lib;opencv_bgsegm451.lib;opencv_bioinspired451.lib;opencv_calib3d451.lib;opencv_ccalib451.lib;opencv_core451.lib;opencv_dnn451.lib;opencv_dnn_superres451.lib;opencv_dnn_objdetect451.lib;opencv_dpm451.lib;opencv_face451.lib;opencv_features2d451.lib;opencv_flann451.lib;opencv_fuzzy451.lib;opencv_hfs451.lib;opencv_highgui451.lib;opencv_imgcodecs451.lib;opencv_imgproc451.lib;opencv_img_hash451.lib;opencv_line_descriptor451.lib;opencv_ml451.lib;opencv_objdetect451.lib;opencv_optflow451.lib;opencv_phase_unwrapping451.lib;opencv_photo451.lib;opencv_plot451.lib;opencv_quality451.lib;opencv_reg451.lib;opencv_rgbd451.lib;opencv_saliency451.lib;opencv_shape451.lib;opencv_stereo451.lib;opencv_stitching451.lib;opencv_structured_light451.lib;opencv_superres451.lib;opencv_surface_matching451.lib;opencv_text451.lib;opencv_tracking451.lib;opencv_video451.lib;opencv_videoio451.lib;opencv_videostab451.lib;opencv_xfeatures2d451.lib;opencv_ximgproc451.lib;opencv_xobjdetect451.lib;opencv_xphoto451.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) + IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco452.lib;opencv_bgsegm452.lib;opencv_bioinspired452.lib;opencv_calib3d452.lib;opencv_ccalib452.lib;opencv_core452.lib;opencv_dnn452.lib;opencv_dnn_superres452.lib;opencv_dnn_objdetect452.lib;opencv_dpm452.lib;opencv_face452.lib;opencv_features2d452.lib;opencv_flann452.lib;opencv_fuzzy452.lib;opencv_hfs452.lib;opencv_highgui452.lib;opencv_imgcodecs452.lib;opencv_imgproc452.lib;opencv_img_hash452.lib;opencv_line_descriptor452.lib;opencv_ml452.lib;opencv_objdetect452.lib;opencv_optflow452.lib;opencv_phase_unwrapping452.lib;opencv_photo452.lib;opencv_plot452.lib;opencv_quality452.lib;opencv_reg452.lib;opencv_rgbd452.lib;opencv_saliency452.lib;opencv_shape452.lib;opencv_stereo452.lib;opencv_stitching452.lib;opencv_structured_light452.lib;opencv_superres452.lib;opencv_surface_matching452.lib;opencv_text452.lib;opencv_tracking452.lib;opencv_video452.lib;opencv_videoio452.lib;opencv_videostab452.lib;opencv_xfeatures2d452.lib;opencv_ximgproc452.lib;opencv_xobjdetect452.lib;opencv_xphoto452.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) %(IgnoreSpecificDefaultLibraries) true NotSet @@ -222,8 +222,8 @@ copy "$(SolutionDir)opencv_files\opencv451_win_x86\x86\vc16\bin\opencv_videoio_f copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\$(TargetFileName)" copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\$(TargetFileName)" -copy "$(SolutionDir)opencv_files\opencv451_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg451_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg451_64.dll" -copy "$(SolutionDir)opencv_files\opencv451_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg451_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\opencv_videoio_ffmpeg451_64.dll" +copy "$(SolutionDir)opencv_files\opencv452_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg452_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg452_64.dll" +copy "$(SolutionDir)opencv_files\opencv452_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg452_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\opencv_videoio_ffmpeg452_64.dll" diff --git a/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj b/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj index c93490d60..2c4f922af 100644 --- a/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj +++ b/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj @@ -103,42 +103,42 @@ $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ $(Platform)\$(Configuration)\ OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv451_uwp_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_uwp_x86\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_uwp_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_uwp_x86\x86\vc16\lib;$(LibraryPath) false $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ $(Platform)\$(Configuration)\ OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv451_uwp_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_uwp_x86\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_uwp_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_uwp_x86\x86\vc16\lib;$(LibraryPath) false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv451_uwp_ARM\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_uwp_ARM\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_uwp_ARM\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_uwp_ARM\x86\vc16\lib;$(LibraryPath) false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv451_uwp_ARM\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_uwp_ARM\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_uwp_ARM\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_uwp_ARM\x86\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv451_uwp_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_uwp_x64\x64\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_uwp_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_uwp_x64\x64\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv451_uwp_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv451_uwp_x64\x64\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv452_uwp_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv452_uwp_x64\x64\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ @@ -174,7 +174,7 @@ Console false D:\Samples\vcpkg\packages\opencv4_x86-uwp\lib; - opencv_world451.lib;opencv_img_hash451.lib;WindowsApp.lib;%(AdditionalDependencies) + opencv_world452.lib;opencv_img_hash452.lib;WindowsApp.lib;%(AdditionalDependencies) @@ -207,7 +207,7 @@ Console false - opencv_world451.lib;opencv_img_hash451.lib;%(AdditionalDependencies) + opencv_world452.lib;opencv_img_hash452.lib;%(AdditionalDependencies) @@ -240,7 +240,7 @@ Console false - opencv_world451.lib;opencv_img_hash451.lib;WindowsApp.lib;%(AdditionalDependencies) + opencv_world452.lib;opencv_img_hash452.lib;WindowsApp.lib;%(AdditionalDependencies) From 9a5aacbca5242a1b72fa571dd28dcea48e37a600 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 4 Apr 2021 20:05:23 +0900 Subject: [PATCH 006/340] gapi??? --- .github/workflows/macos10.yml | 2 +- .github/workflows/ubuntu18.yml | 2 +- .../OpenCvSharp.Tests.csproj | 2 +- .../OpenCvSharp.ReleaseMaker.csproj | 2 +- tool/OpenCvSharp.ReleaseMaker/Packer.cs | 40 +++++++++---------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/macos10.yml b/.github/workflows/macos10.yml index e87bb6b33..759b9f1a0 100644 --- a/.github/workflows/macos10.yml +++ b/.github/workflows/macos10.yml @@ -60,7 +60,7 @@ jobs: -DBUILD_opencv_dnn_objdetect=OFF \ -DBUILD_opencv_dpm=OFF \ -DBUILD_opencv_fuzzy=OFF \ - -DBUILD_opencv_gapi=OFF \ + -DBUILD_opencv_gapi=ON \ -DBUILD_opencv_intensity_transform=OFF \ -DBUILD_opencv_mcc=OFF \ -DBUILD_opencv_rapid=OFF \ diff --git a/.github/workflows/ubuntu18.yml b/.github/workflows/ubuntu18.yml index 7ee822491..45aa204a0 100644 --- a/.github/workflows/ubuntu18.yml +++ b/.github/workflows/ubuntu18.yml @@ -89,7 +89,7 @@ jobs: -D BUILD_opencv_dnn_objdetect=OFF \ -D BUILD_opencv_dpm=OFF \ -D BUILD_opencv_fuzzy=OFF \ - -D BUILD_opencv_gapi=OFF \ + -D BUILD_opencv_gapi=ON \ -D BUILD_opencv_intensity_transform=OFF \ -D BUILD_opencv_mcc=OFF \ -D BUILD_opencv_rapid=OFF \ diff --git a/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj b/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj index 78e351d51..baea5c9f0 100644 --- a/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj +++ b/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj @@ -53,7 +53,7 @@ - + diff --git a/tool/OpenCvSharp.ReleaseMaker/OpenCvSharp.ReleaseMaker.csproj b/tool/OpenCvSharp.ReleaseMaker/OpenCvSharp.ReleaseMaker.csproj index c73e0d169..c87ce77f0 100644 --- a/tool/OpenCvSharp.ReleaseMaker/OpenCvSharp.ReleaseMaker.csproj +++ b/tool/OpenCvSharp.ReleaseMaker/OpenCvSharp.ReleaseMaker.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net5 diff --git a/tool/OpenCvSharp.ReleaseMaker/Packer.cs b/tool/OpenCvSharp.ReleaseMaker/Packer.cs index 710c8a182..e2ce0033f 100644 --- a/tool/OpenCvSharp.ReleaseMaker/Packer.cs +++ b/tool/OpenCvSharp.ReleaseMaker/Packer.cs @@ -72,26 +72,14 @@ public static class Packer ["uwp"] = new[] { "x86", "x64", "ARM" }, }; - private static readonly IReadOnlyDictionary uwpNativeDllDirectories = new Dictionary - { - ["x86"] = @"opencv_files\opencv451_uwp_x86\x86\vc16\bin", - ["x64"] = @"opencv_files\opencv451_uwp_x64\x64\vc16\bin", - ["ARM"] = @"opencv_files\opencv451_uwp_ARM\x86\vc16\bin", - }; - private static readonly IReadOnlyList uwpNativeDlls = new[] - { - "opencv_world451.dll", - "opencv_img_hash451.dll" - }; - - private static readonly HashSet ignoredExt = new[]{ + private static readonly IReadOnlySet ignoredExt = new[]{ ".bak", ".user", ".suo", ".git", ".gitignore", }.ToHashSet(); - private static readonly HashSet ignoredDir = new[]{ + private static readonly IReadOnlySet ignoredDir = new[]{ ".git", "bin", "obj", @@ -99,17 +87,29 @@ public static class Packer ".nuget", "packages", }.ToHashSet(); + + private static IReadOnlyDictionary UwpNativeDllDirectories(string version) => new Dictionary + { + ["x86"] = @$"opencv_files\opencv{version}_uwp_x86\x86\vc16\bin", + ["x64"] = @$"opencv_files\opencv{version}_uwp_x64\x64\vc16\bin", + ["ARM"] = @$"opencv_files\opencv{version}_uwp_ARM\x86\vc16\bin", + }; + private static IReadOnlyList UwpNativeDlls(string version) => new[] + { + $"opencv_world{version}.dll", + $"opencv_img_hash{version}.dll" + }; /// /// Make /// /// /// - /// e.g. 4.5.1 - public static void Pack(string srcDir, string dstDir, string version) + /// e.g. 4.5.1 + public static void Pack(string srcDir, string dstDir, string opencvVersion) { - MakeBinaryPackage(srcDir, dstDir, version); - MakeSamplePackage(srcDir, dstDir, version); + MakeBinaryPackage(srcDir, dstDir, opencvVersion); + MakeSamplePackage(srcDir, dstDir, opencvVersion); } /// @@ -175,9 +175,9 @@ private static void MakeBinaryPackage(string dir, string dirDst, string opencvVe // UWPはopencv_world.dll等も入れる if (p.Key == "uwp") { - var uwpNativeDllDir = uwpNativeDllDirectories[arch]; + var uwpNativeDllDir = UwpNativeDllDirectories(opencvVersion)[arch]; uwpNativeDllDir = Path.Combine(dir, uwpNativeDllDir); - foreach (var dllName in uwpNativeDlls) + foreach (var dllName in UwpNativeDlls(opencvVersion)) { var uwpNativeDll = Path.Combine(uwpNativeDllDir, dllName); var dstDirectory = Path.Combine("NativeLib", "uwp", arch); From 285c9a188b3f5a154f11c5c4affc59f2e47e4770 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 4 Apr 2021 20:31:43 +0900 Subject: [PATCH 007/340] 452 --- nuget/OpenCvSharp4.runtime.uwp.nuspec | 12 ++++++------ nuget/OpenCvSharp4.runtime.win.nuspec | 4 ++-- nuget/OpenCvSharp4.runtime.win.props | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/nuget/OpenCvSharp4.runtime.uwp.nuspec b/nuget/OpenCvSharp4.runtime.uwp.nuspec index 065795c1f..ecafaa1e3 100644 --- a/nuget/OpenCvSharp4.runtime.uwp.nuspec +++ b/nuget/OpenCvSharp4.runtime.uwp.nuspec @@ -27,11 +27,11 @@ - - - - - - + + + + + + diff --git a/nuget/OpenCvSharp4.runtime.win.nuspec b/nuget/OpenCvSharp4.runtime.win.nuspec index d1985928f..2f6e478fe 100644 --- a/nuget/OpenCvSharp4.runtime.win.nuspec +++ b/nuget/OpenCvSharp4.runtime.win.nuspec @@ -28,8 +28,8 @@ - - + + diff --git a/nuget/OpenCvSharp4.runtime.win.props b/nuget/OpenCvSharp4.runtime.win.props index ffff885c8..de22c894a 100644 --- a/nuget/OpenCvSharp4.runtime.win.props +++ b/nuget/OpenCvSharp4.runtime.win.props @@ -7,8 +7,8 @@ dll\x86\OpenCvSharpExtern.dll PreserveNewest - - dll\x86\opencv_videoio_ffmpeg451.dll + + dll\x86\opencv_videoio_ffmpeg452.dll PreserveNewest @@ -17,8 +17,8 @@ dll\x64\OpenCvSharpExtern.dll PreserveNewest - - dll\x64\opencv_videoio_ffmpeg451_64.dll + + dll\x64\opencv_videoio_ffmpeg452_64.dll PreserveNewest From b3642207c3692dee1ba7df8e39000731cd96ac49 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 4 Apr 2021 22:13:16 +0900 Subject: [PATCH 008/340] 4.5.2 -> 452 --- tool/OpenCvSharp.ReleaseMaker/Packer.cs | 31 ++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/tool/OpenCvSharp.ReleaseMaker/Packer.cs b/tool/OpenCvSharp.ReleaseMaker/Packer.cs index e2ce0033f..61af07b84 100644 --- a/tool/OpenCvSharp.ReleaseMaker/Packer.cs +++ b/tool/OpenCvSharp.ReleaseMaker/Packer.cs @@ -44,7 +44,7 @@ public static class Packer @"OpenCvSharp.Extensions\bin\Release\netcoreapp2.1\OpenCvSharp.Extensions.dll", @"OpenCvSharp.Extensions\bin\Release\netcoreapp2.1\OpenCvSharp.Extensions.pdb", }, - ["netcoreapp3.1"] = new[] + ["netcoreapp3.1"] = new[] { // netstandard2.1 @"OpenCvSharp\bin\Release\netstandard2.1\OpenCvSharp.dll", @@ -87,18 +87,27 @@ public static class Packer ".nuget", "packages", }.ToHashSet(); - - private static IReadOnlyDictionary UwpNativeDllDirectories(string version) => new Dictionary + + private static IReadOnlyDictionary UwpNativeDllDirectories(string version) { - ["x86"] = @$"opencv_files\opencv{version}_uwp_x86\x86\vc16\bin", - ["x64"] = @$"opencv_files\opencv{version}_uwp_x64\x64\vc16\bin", - ["ARM"] = @$"opencv_files\opencv{version}_uwp_ARM\x86\vc16\bin", - }; - private static IReadOnlyList UwpNativeDlls(string version) => new[] + version = version.Replace(".", ""); + return new Dictionary + { + ["x86"] = @$"opencv_files\opencv{version}_uwp_x86\x86\vc16\bin", + ["x64"] = @$"opencv_files\opencv{version}_uwp_x64\x64\vc16\bin", + ["ARM"] = @$"opencv_files\opencv{version}_uwp_ARM\x86\vc16\bin", + }; + } + + private static IReadOnlyList UwpNativeDlls(string version) { - $"opencv_world{version}.dll", - $"opencv_img_hash{version}.dll" - }; + version = version.Replace(".", ""); + return new[] + { + $"opencv_world{version}.dll", + $"opencv_img_hash{version}.dll" + }; + } /// /// Make From 3addd8488aa494298e181f140b2356376e18eb13 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 4 Apr 2021 22:26:25 +0900 Subject: [PATCH 009/340] add ConnectedComponentsAlgorithmsTypes' new values --- .../ConnectedComponentsAlgorithmsTypes.cs | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/OpenCvSharp/Modules/imgproc/Enum/ConnectedComponentsAlgorithmsTypes.cs b/src/OpenCvSharp/Modules/imgproc/Enum/ConnectedComponentsAlgorithmsTypes.cs index 008433835..c559c20c3 100644 --- a/src/OpenCvSharp/Modules/imgproc/Enum/ConnectedComponentsAlgorithmsTypes.cs +++ b/src/OpenCvSharp/Modules/imgproc/Enum/ConnectedComponentsAlgorithmsTypes.cs @@ -21,6 +21,26 @@ public enum ConnectedComponentsAlgorithmsTypes /// /// BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity /// - GRANA = 1 + GRANA = 1, + + /// + /// Spaghetti @cite Bolelli2019 algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity. + /// + BOLELLI = 2, + + /// + /// Same as CCL_WU. It is preferable to use the flag with the name of the algorithm (CCL_SAUF) rather than the one with the name of the first author (CCL_WU). + /// + SAUF = 3, + + /// + /// Same as CCL_GRANA. It is preferable to use the flag with the name of the algorithm (CCL_BBDT) rather than the one with the name of the first author (CCL_GRANA). + /// + BBDT = 4, + + /// + /// Same as CCL_BOLELLI. It is preferable to use the flag with the name of the algorithm (CCL_SPAGHETTI) rather than the one with the name of the first author (CCL_BOLELLI). + /// + SPAGHETTI = 5, } } From 74ded8bdeacbe1df312522856d62ae8f06ee04d6 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 4 Apr 2021 23:37:27 +0900 Subject: [PATCH 010/340] remove net48 --- nuget/OpenCvSharp4.runtime.win.nuspec | 1 - 1 file changed, 1 deletion(-) diff --git a/nuget/OpenCvSharp4.runtime.win.nuspec b/nuget/OpenCvSharp4.runtime.win.nuspec index 2f6e478fe..f1383e242 100644 --- a/nuget/OpenCvSharp4.runtime.win.nuspec +++ b/nuget/OpenCvSharp4.runtime.win.nuspec @@ -16,7 +16,6 @@ Image Processing OpenCV Wrapper FFI opencvsharp - From 7187b31e9579cf29c0a7b5e472b1c2720cc14a5d Mon Sep 17 00:00:00 2001 From: shimat Date: Mon, 5 Apr 2021 00:38:33 +0900 Subject: [PATCH 011/340] update samples --- samples | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples b/samples index 7139d74d6..02f305d28 160000 --- a/samples +++ b/samples @@ -1 +1 @@ -Subproject commit 7139d74d655e9cc25ec70e552a6fc4077a0793a5 +Subproject commit 02f305d28dd57c2eeb8d690580e998e27a1e2c96 From ea7c67ff0df7b0bc003b46b245a413c7830ffb16 Mon Sep 17 00:00:00 2001 From: shimat Date: Wed, 7 Apr 2021 23:35:43 +0900 Subject: [PATCH 012/340] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69e408cf9..3499e5606 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ This issue may be helpful: https://github.com/shimat/opencvsharp/issues/920 If you do not use NuGet, get DLL files from the [release page](https://github.com/shimat/opencvsharp/releases). ## Target OpenCV -* [OpenCV 4.5.1](http://opencv.org/) with [opencv_contrib](https://github.com/opencv/opencv_contrib) +* [OpenCV 4.5.2](http://opencv.org/) with [opencv_contrib](https://github.com/opencv/opencv_contrib) ## Requirements * [.NET Framework 4.6.1](http://www.microsoft.com/ja-jp/download/details.aspx?id=1639) / [.NET Core 2.0](https://www.microsoft.com/net/download) / [Mono](http://www.mono-project.com/Main_Page) From efe45d11ec16bdb8b5a7623b74ab126c2bd648ab Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 11 Apr 2021 07:41:56 +0900 Subject: [PATCH 013/340] Add RL to NativeMethods_ximgproc.cs --- .../ximgproc/NativeMethods_ximgproc.cs | 34 +++ .../Modules/ximgproc/CvXImgProc.cs | 219 +++++++++++++++++- src/OpenCvSharpExtern/ximgproc.h | 8 +- 3 files changed, 252 insertions(+), 9 deletions(-) diff --git a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc.cs b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc.cs index e9999ac5e..a4c4f6971 100644 --- a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc.cs +++ b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/ximgproc/NativeMethods_ximgproc.cs @@ -95,6 +95,40 @@ public static extern ExceptionStatus ximgproc_HoughPoint2Line( [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus ximgproc_PeiLinNormalization_OutputArray(IntPtr I, IntPtr T); + // run_length_morphology.hpp + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_threshold( + IntPtr src, IntPtr rlDest, double thresh, int type); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_dilate( + IntPtr rlSrc, IntPtr rlDest, IntPtr rlKernel, Point anchor); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_erode( + IntPtr rlSrc, IntPtr rlDest, IntPtr rlKernel, int bBoundaryOn, Point anchor); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_getStructuringElement( + int shape, Size ksize, IntPtr outValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_paint( + IntPtr image, IntPtr rlSrc, Scalar value); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_isRLMorphologyPossible( + IntPtr rlStructuringElement, out int outValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_createRLEImage( + Point3i[] runs, nint runsLength, IntPtr res, Size size); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus ximgproc_rl_morphologyEx( + IntPtr rlSrc, IntPtr rlDest, int op, IntPtr rlKernel, int bBoundaryOnForErosion, Point anchor); + // weighted_median_filter [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] diff --git a/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs b/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs index 864e882c7..16daba466 100644 --- a/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs +++ b/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Linq; using OpenCvSharp.Internal; using OpenCvSharp.XImgProc.Segmentation; @@ -114,6 +116,209 @@ public static SelectiveSearchSegmentationStrategyMultiple CreateSelectiveSearchS } } + /// + /// // run_length_morphology.hpp + /// + public static class RL + { + /// + /// Applies a fixed-level threshold to each array element. + /// + /// input array (single-channel). + /// resulting run length encoded image. + /// threshold value. + /// thresholding type (only cv::THRESH_BINARY and cv::THRESH_BINARY_INV are supported) + public static void Threshold(InputArray src, OutputArray rlDest, double thresh, ThresholdTypes type) + { + if (src == null) + throw new ArgumentNullException(nameof(src)); + if (rlDest == null) + throw new ArgumentNullException(nameof(rlDest)); + src.ThrowIfDisposed(); + rlDest.ThrowIfNotReady(); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_threshold(src.CvPtr, rlDest.CvPtr, thresh, (int)type)); + + GC.KeepAlive(src); + rlDest.Fix(); + } + + /// + /// Dilates an run-length encoded binary image by using a specific structuring element. + /// + /// input image + /// result + /// kernel + /// position of the anchor within the element; default value (0, 0) is usually the element center. + public static void Dilate( + InputArray rlSrc, OutputArray rlDest, InputArray rlKernel, Point? anchor = null) + { + if (rlSrc == null) + throw new ArgumentNullException(nameof(rlSrc)); + if (rlDest == null) + throw new ArgumentNullException(nameof(rlDest)); + if (rlKernel == null) + throw new ArgumentNullException(nameof(rlKernel)); + rlSrc.ThrowIfDisposed(); + rlDest.ThrowIfNotReady(); + rlKernel.ThrowIfDisposed(); + + var anchorValue = anchor.GetValueOrDefault(new Point(0, 0)); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_dilate(rlSrc.CvPtr, rlDest.CvPtr, rlKernel.CvPtr, anchorValue)); + + GC.KeepAlive(rlSrc); + rlDest.Fix(); + GC.KeepAlive(rlKernel); + } + + /// + /// Erodes an run-length encoded binary image by using a specific structuring element. + /// + /// input image + /// result + /// kernel + /// indicates whether pixel outside the image boundary are assumed to be on + /// (True: works in the same way as the default of cv::erode, False: is a little faster) + /// position of the anchor within the element; default value (0, 0) + /// is usually the element center. + public static void Erode( + InputArray rlSrc, OutputArray rlDest, InputArray rlKernel, bool bBoundaryOn = true, Point? anchor = null) + { + if (rlSrc == null) + throw new ArgumentNullException(nameof(rlSrc)); + if (rlDest == null) + throw new ArgumentNullException(nameof(rlDest)); + if (rlKernel == null) + throw new ArgumentNullException(nameof(rlKernel)); + rlSrc.ThrowIfDisposed(); + rlDest.ThrowIfNotReady(); + rlKernel.ThrowIfDisposed(); + + var anchorValue = anchor.GetValueOrDefault(new Point(0, 0)); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_erode(rlSrc.CvPtr, rlDest.CvPtr, rlKernel.CvPtr, bBoundaryOn ? 1 : 0, anchorValue)); + + GC.KeepAlive(rlSrc); + rlDest.Fix(); + GC.KeepAlive(rlKernel); + } + + /// + /// Returns a run length encoded structuring element of the specified size and shape. + /// + /// Element shape that can be one of cv::MorphShapes + /// Size of the structuring element. + /// + public static Mat GetStructuringElement(MorphShapes shape, Size ksize) + { + var ret = new Mat(); + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_getStructuringElement((int)shape, ksize, ret.CvPtr)); + return ret; + } + + /// + /// Paint run length encoded binary image into an image. + /// + /// image to paint into (currently only single channel images). + /// run length encoded image + /// all foreground pixel of the binary image are set to this value + public static void Paint(InputOutputArray image, InputArray rlSrc, Scalar value) + { + if (image == null) + throw new ArgumentNullException(nameof(image)); + if (rlSrc == null) + throw new ArgumentNullException(nameof(rlSrc)); + image.ThrowIfNotReady(); + rlSrc.ThrowIfDisposed(); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_paint(image.CvPtr, rlSrc.CvPtr, value)); + + image.Fix(); + GC.KeepAlive(rlSrc); + } + + /// + /// Check whether a custom made structuring element can be used with run length morphological operations. + /// (It must consist of a continuous array of single runs per row) + /// + /// + /// + public static bool IsRLMorphologyPossible(InputArray rlStructuringElement) + { + if (rlStructuringElement == null) + throw new ArgumentNullException(nameof(rlStructuringElement)); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_isRLMorphologyPossible(rlStructuringElement.CvPtr, out var ret)); + + GC.KeepAlive(rlStructuringElement); + + return ret != 0; + } + + /// + /// Creates a run-length encoded image from a vector of runs (column begin, column end, row) + /// + /// vector of runs + /// result + /// image size (to be used if an "on" boundary should be used in erosion, using the default + /// means that the size is computed from the extension of the input) + public static void CreateRLEImage(IEnumerable runs, OutputArray res, Size? size = null) + { + if (res == null) + throw new ArgumentNullException(nameof(res)); + res.ThrowIfNotReady(); + + var runsArray = runs as Point3i[] ?? runs.ToArray(); + var sizeValue = size.GetValueOrDefault(new Size(0, 0)); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_createRLEImage(runsArray, runsArray.Length, res.CvPtr, sizeValue)); + + res.Fix(); + } + + /// + /// Applies a morphological operation to a run-length encoded binary image. + /// + /// input image + /// result + /// all operations supported by cv::morphologyEx (except cv::MORPH_HITMISS) + /// kernel + /// indicates whether pixel outside the image boundary are assumed + /// to be on for erosion operations (True: works in the same way as the default of cv::erode, False: is a little faster) + /// position of the anchor within the element; default value (0, 0) is usually the element center. + public static void MorphologyEx( + InputArray rlSrc, OutputArray rlDest, MorphTypes op, InputArray rlKernel, + bool bBoundaryOnForErosion = true, Point? anchor = null) + { + if (rlSrc == null) + throw new ArgumentNullException(nameof(rlSrc)); + if (rlDest == null) + throw new ArgumentNullException(nameof(rlDest)); + if (rlKernel == null) + throw new ArgumentNullException(nameof(rlKernel)); + rlSrc.ThrowIfDisposed(); + rlDest.ThrowIfNotReady(); + rlKernel.ThrowIfDisposed(); + + var anchorValue = anchor.GetValueOrDefault(new Point(0, 0)); + + NativeMethods.HandleException( + NativeMethods.ximgproc_rl_morphologyEx(rlSrc.CvPtr, rlDest.CvPtr, (int)op, rlKernel.CvPtr, bBoundaryOnForErosion ? 1 : 0, anchorValue)); + + GC.KeepAlive(rlSrc); + rlDest.Fix(); + GC.KeepAlive(rlKernel); + } + } + /// /// Applies Niblack thresholding to input image. /// @@ -141,12 +346,12 @@ public static SelectiveSearchSegmentationStrategyMultiple CreateSelectiveSearchS /// Other techniques can be specified, see cv::ximgproc::LocalBinarizationMethods. /// The user-adjustable parameter used by Sauvola's technique. This is the dynamic range of standard deviation. public static void NiblackThreshold( - InputArray src, + InputArray src, OutputArray dst, double maxValue, ThresholdTypes type, - int blockSize, - double k, + int blockSize, + double k, LocalBinarizationMethods binarizationMethod = LocalBinarizationMethods.Niblack, double r = 128) { @@ -434,7 +639,7 @@ public static void GradientDericheX(InputArray op, OutputArray dst, double alpha } #endregion - + #region edgeboxes.hpp /// @@ -564,7 +769,7 @@ public static GuidedFilter CreateGuidedFilter( /// space into bilateralFilter. /// optional depth of the output image. public static void GuidedFilter( - InputArray guide, InputArray src, OutputArray dst, + InputArray guide, InputArray src, OutputArray dst, int radius, double eps, int dDepth = -1) { if (guide == null) @@ -733,12 +938,12 @@ public static void RollingGuidanceFilter( NativeMethods.HandleException( NativeMethods.ximgproc_rollingGuidanceFilter( - src.CvPtr, dst.CvPtr, d, sigmaColor, sigmaSpace, numOfIter, (int) borderType)); + src.CvPtr, dst.CvPtr, d, sigmaColor, sigmaSpace, numOfIter, (int)borderType)); GC.KeepAlive(src); dst.Fix(); } - + /// /// Simple one-line Fast Bilateral Solver filter call. If you have multiple images to filter with the same /// guide then use FastBilateralSolverFilter interface to avoid extra computations. diff --git a/src/OpenCvSharpExtern/ximgproc.h b/src/OpenCvSharpExtern/ximgproc.h index e84683e61..46c0af3f1 100644 --- a/src/OpenCvSharpExtern/ximgproc.h +++ b/src/OpenCvSharpExtern/ximgproc.h @@ -177,8 +177,12 @@ CVAPI(ExceptionStatus) ximgproc_PeiLinNormalization_OutputArray(cv::_InputArray // run_length_morphology.hpp -CVAPI(ExceptionStatus) ximgproc_rl_threshold(InputArray src, OutputArray rlDest, double thresh, int type); - +CVAPI(ExceptionStatus) ximgproc_rl_threshold(cv::_InputArray *src, cv::_OutputArray *rlDest, double thresh, int type) +{ + BEGIN_WRAP + cv::ximgproc::rl::threshold(*src, *rlDest, thresh, type); + END_WRAP +} CVAPI(ExceptionStatus) ximgproc_rl_dilate( cv::_InputArray *rlSrc, cv::_OutputArray *rlDest, cv::_InputArray *rlKernel, MyCvPoint anchor) From 101fd81036ed8c4ccd847e25040c21431001b814 Mon Sep 17 00:00:00 2001 From: shimat Date: Fri, 30 Apr 2021 10:17:48 +0900 Subject: [PATCH 014/340] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3499e5606..bb9510dde 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ -# OpenCvSharp -[![Github Actions Windows Status](https://github.com/shimat/opencvsharp/workflows/Windows%20Server%202019/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions Ubuntu Status](https://github.com/shimat/opencvsharp/workflows/Ubuntu%2018.04/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions MacOS Status](https://github.com/shimat/opencvsharp/workflows/macOS%2010.15/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![GitHub license](https://img.shields.io/github/license/shimat/opencvsharp.svg)](https://github.com/shimat/opencvsharp/blob/master/LICENSE) +![opencvsharp](https://socialify.git.ci/shimat/opencvsharp/image?description=1&font=Inter&forks=1&language=1&owner=1&stargazers=1&theme=Light) -Wrapper of OpenCV for .NET +[![Github Actions Windows Status](https://github.com/shimat/opencvsharp/workflows/Windows%20Server%202019/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions Ubuntu Status](https://github.com/shimat/opencvsharp/workflows/Ubuntu%2018.04/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions MacOS Status](https://github.com/shimat/opencvsharp/workflows/macOS%2010.15/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![GitHub license](https://img.shields.io/github/license/shimat/opencvsharp.svg)](https://github.com/shimat/opencvsharp/blob/master/LICENSE) Old versions of OpenCvSharp are stored in [opencvsharp_2410](https://github.com/shimat/opencvsharp_2410). From abf67a2372e3cb742f19ef9bb2ed3a9969d733ae Mon Sep 17 00:00:00 2001 From: shimat Date: Fri, 30 Apr 2021 10:19:15 +0900 Subject: [PATCH 015/340] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb9510dde..fe465b6eb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![opencvsharp](https://socialify.git.ci/shimat/opencvsharp/image?description=1&font=Inter&forks=1&language=1&owner=1&stargazers=1&theme=Light) +![opencvsharp](https://user-images.githubusercontent.com/4434824/116636930-7c948580-a99d-11eb-8ae6-a5ffd50ef08c.png) [![Github Actions Windows Status](https://github.com/shimat/opencvsharp/workflows/Windows%20Server%202019/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions Ubuntu Status](https://github.com/shimat/opencvsharp/workflows/Ubuntu%2018.04/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions MacOS Status](https://github.com/shimat/opencvsharp/workflows/macOS%2010.15/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![GitHub license](https://img.shields.io/github/license/shimat/opencvsharp.svg)](https://github.com/shimat/opencvsharp/blob/master/LICENSE) From 34fb3c7d4946d7906ffa0c383aca8cdc4e8f6e46 Mon Sep 17 00:00:00 2001 From: shimat Date: Fri, 30 Apr 2021 10:22:44 +0900 Subject: [PATCH 016/340] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe465b6eb..672fe69f1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![opencvsharp](https://user-images.githubusercontent.com/4434824/116636930-7c948580-a99d-11eb-8ae6-a5ffd50ef08c.png) +![opencvsharp](https://socialify.git.ci/shimat/opencvsharp/image?forks=1&language=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Light) [![Github Actions Windows Status](https://github.com/shimat/opencvsharp/workflows/Windows%20Server%202019/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions Ubuntu Status](https://github.com/shimat/opencvsharp/workflows/Ubuntu%2018.04/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions MacOS Status](https://github.com/shimat/opencvsharp/workflows/macOS%2010.15/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![GitHub license](https://img.shields.io/github/license/shimat/opencvsharp.svg)](https://github.com/shimat/opencvsharp/blob/master/LICENSE) From 78ff2c30f5a610cae88fe95cd06f8a677a593c74 Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Wed, 5 May 2021 18:04:05 +0100 Subject: [PATCH 017/340] Add Linux ARM build; add ARM to NuGet publish --- .github/workflows/publish_nuget.yml | 7 ++++ .github/workflows/ubuntu18-arm.yml | 41 +++++++++++++++++++ ...arp4.runtime.ubuntu.18.04-linux-arm.csproj | 12 ++++++ ...arp4.runtime.ubuntu.18.04-linux-arm.nuspec | 30 ++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 .github/workflows/ubuntu18-arm.yml create mode 100644 nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj create mode 100644 nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec diff --git a/.github/workflows/publish_nuget.yml b/.github/workflows/publish_nuget.yml index 02493185d..2d14d6532 100644 --- a/.github/workflows/publish_nuget.yml +++ b/.github/workflows/publish_nuget.yml @@ -24,6 +24,13 @@ jobs: workflow: ubuntu18.yml name: artifacts_ubuntu_18 + - name: Download ubuntu arm artifact + uses: dawidd6/action-download-artifact@v2 + with: + github_token: ${{secrets.GITHUB_TOKEN}} + workflow: ubuntu18-arm.yml + name: artifacts_ubuntu_18_arm + - name: Download macos artifact uses: dawidd6/action-download-artifact@v2 with: diff --git a/.github/workflows/ubuntu18-arm.yml b/.github/workflows/ubuntu18-arm.yml new file mode 100644 index 000000000..aad39ed9b --- /dev/null +++ b/.github/workflows/ubuntu18-arm.yml @@ -0,0 +1,41 @@ +name: Linux ARM (Docker) + +on: + pull_request: + types: [synchronize, opened] + push: + branches: + - master + +env: + DEBIAN_FRONTEND: noninteractive + OPENCV_VERSION: 4.5.2 + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2.2.0 + + - uses: docker/setup-buildx-action@v1 + with: + install: true + + - uses: docker/setup-qemu-action@v1 + + - name: Build with Docker + run: | + mkdir artifacts_ubuntu + + docker build \ + --platform=linux/arm/v7 \ + -v ./artifacts_ubuntu:/artifacts \ + -t opencvsharp-linux-arm \ + -e DEBIAN_FRONTEND \ + -e OPENCV_VERSION \ + ./docker/ubuntu18-dotnetcore3.1-opencv4.5.1 + + - uses: actions/upload-artifact@v2 + with: + name: artifacts_ubuntu_18_arm + path: artifacts_ubuntu diff --git a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj b/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj new file mode 100644 index 000000000..6b5b9573d --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj @@ -0,0 +1,12 @@ + + + netstandard2.0;netstandard2.1;netcoreapp2.1; + true + false + OpenCvSharp4.runtime.linux-arm.nuspec + + + + + diff --git a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec b/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec new file mode 100644 index 000000000..6132d9fbe --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec @@ -0,0 +1,30 @@ + + + + OpenCvSharp4.runtime.ubuntu.18.04-linux-arm + 4.3.0.20191030 + OpenCvSharp native bindings for ubuntu.18.04-linux-arm + shimat + Apache-2.0 + + https://github.com/shimat/opencvsharp + https://raw.githubusercontent.com/shimat/opencvsharp/master/nuget/icon/opencvsharp.png + false + Internal implementation package for OpenCvSharp to work on Ubuntu 18.04 for ARM + Internal implementation package for OpenCvSharp to work on Ubuntu 18.04 for ARM + + Copyright 2008-2019 + Image Processing OpenCV Wrapper FFI opencvsharp + + + + + + + + + + + + + From a8997d2b51e70bdb3345d40d4580100cbc6cf3bf Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Wed, 5 May 2021 19:44:32 +0100 Subject: [PATCH 018/340] Fix target runtime --- nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec b/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec index 6132d9fbe..4969f2e84 100644 --- a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec +++ b/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec @@ -25,6 +25,6 @@ - + From f288b220e836db4c37652f35c90abdf8f909cf0b Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Wed, 5 May 2021 19:55:12 +0100 Subject: [PATCH 019/340] Use 'linux-arm' RID everywhere --- .github/workflows/{ubuntu18-arm.yml => linux-arm.yml} | 8 ++++---- .github/workflows/publish_nuget.yml | 4 ++-- ...x-arm.csproj => OpenCvSharp4.runtime.linux-arm.csproj} | 0 ...x-arm.nuspec => OpenCvSharp4.runtime.linux-arm.nuspec} | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename .github/workflows/{ubuntu18-arm.yml => linux-arm.yml} (82%) rename nuget/{OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj => OpenCvSharp4.runtime.linux-arm.csproj} (100%) rename nuget/{OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec => OpenCvSharp4.runtime.linux-arm.nuspec} (91%) diff --git a/.github/workflows/ubuntu18-arm.yml b/.github/workflows/linux-arm.yml similarity index 82% rename from .github/workflows/ubuntu18-arm.yml rename to .github/workflows/linux-arm.yml index aad39ed9b..f0d00197b 100644 --- a/.github/workflows/ubuntu18-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -25,11 +25,11 @@ jobs: - name: Build with Docker run: | - mkdir artifacts_ubuntu + mkdir artifacts_arm docker build \ --platform=linux/arm/v7 \ - -v ./artifacts_ubuntu:/artifacts \ + -v ./artifacts_arm:/artifacts \ -t opencvsharp-linux-arm \ -e DEBIAN_FRONTEND \ -e OPENCV_VERSION \ @@ -37,5 +37,5 @@ jobs: - uses: actions/upload-artifact@v2 with: - name: artifacts_ubuntu_18_arm - path: artifacts_ubuntu + name: artifacts_linux_arm + path: artifacts_arm diff --git a/.github/workflows/publish_nuget.yml b/.github/workflows/publish_nuget.yml index 2d14d6532..338a2d90d 100644 --- a/.github/workflows/publish_nuget.yml +++ b/.github/workflows/publish_nuget.yml @@ -28,8 +28,8 @@ jobs: uses: dawidd6/action-download-artifact@v2 with: github_token: ${{secrets.GITHUB_TOKEN}} - workflow: ubuntu18-arm.yml - name: artifacts_ubuntu_18_arm + workflow: linux-arm.yml + name: artifacts_linux_arm - name: Download macos artifact uses: dawidd6/action-download-artifact@v2 diff --git a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj b/nuget/OpenCvSharp4.runtime.linux-arm.csproj similarity index 100% rename from nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.csproj rename to nuget/OpenCvSharp4.runtime.linux-arm.csproj diff --git a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec b/nuget/OpenCvSharp4.runtime.linux-arm.nuspec similarity index 91% rename from nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec rename to nuget/OpenCvSharp4.runtime.linux-arm.nuspec index 4969f2e84..1b7b8db39 100644 --- a/nuget/OpenCvSharp4.runtime.ubuntu.18.04-linux-arm.nuspec +++ b/nuget/OpenCvSharp4.runtime.linux-arm.nuspec @@ -1,9 +1,9 @@ - OpenCvSharp4.runtime.ubuntu.18.04-linux-arm + OpenCvSharp4.runtime.linux-arm 4.3.0.20191030 - OpenCvSharp native bindings for ubuntu.18.04-linux-arm + OpenCvSharp native bindings for linux-arm shimat Apache-2.0 From ebd6e579654fdfe49d91b3b1243f6bda8846a178 Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Wed, 5 May 2021 21:42:36 +0100 Subject: [PATCH 020/340] Extract build files from Docker instance --- .github/workflows/linux-arm.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index f0d00197b..97198c47e 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -22,19 +22,24 @@ jobs: install: true - uses: docker/setup-qemu-action@v1 - + - name: Build with Docker run: | mkdir artifacts_arm docker build \ + -t opencvsharp-linux-arm:latest \ + --output=type=docker \ --platform=linux/arm/v7 \ - -v ./artifacts_arm:/artifacts \ - -t opencvsharp-linux-arm \ -e DEBIAN_FRONTEND \ -e OPENCV_VERSION \ ./docker/ubuntu18-dotnetcore3.1-opencv4.5.1 + - name: Extract build files from Docker instance + run: | + docker create -ti --name opencvsharp-linux-arm-tmp opencvsharp-linux-arm bash + docker cp opencvsharp-linux-arm-tmp:/artifacts ./artifacts_arm + - uses: actions/upload-artifact@v2 with: name: artifacts_linux_arm From 2a18e8581f0d68dc127c7c3b4f9a4cdf901a8b5d Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Thu, 6 May 2021 13:00:58 +0100 Subject: [PATCH 021/340] Set OPENCV_VERSION as build arg --- .github/workflows/linux-arm.yml | 7 +++---- docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 97198c47e..ef3d729ac 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -25,19 +25,18 @@ jobs: - name: Build with Docker run: | - mkdir artifacts_arm - + # Override OpenCV version in Dockerfile docker build \ -t opencvsharp-linux-arm:latest \ --output=type=docker \ --platform=linux/arm/v7 \ - -e DEBIAN_FRONTEND \ - -e OPENCV_VERSION \ + --build-arg OPENCV_VERSION \ ./docker/ubuntu18-dotnetcore3.1-opencv4.5.1 - name: Extract build files from Docker instance run: | docker create -ti --name opencvsharp-linux-arm-tmp opencvsharp-linux-arm bash + mkdir artifacts_arm docker cp opencvsharp-linux-arm-tmp:/artifacts ./artifacts_arm - uses: actions/upload-artifact@v2 diff --git a/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile b/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile index b2ea62ca4..c2ec38d2d 100644 --- a/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile +++ b/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile @@ -1,6 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:3.1-bionic -ENV OPENCV_VERSION=4.5.1 +ENV DEBIAN_FRONTEND=noninteractive +ARG OPENCV_VERSION=4.5.1 WORKDIR / From 5792c301912eb1ed8fa8ff41de80d83a217a197b Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Thu, 6 May 2021 13:19:48 +0100 Subject: [PATCH 022/340] Use all cores for 'make' --- docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile b/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile index c2ec38d2d..87ea36d05 100644 --- a/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile +++ b/docker/ubuntu18-dotnetcore3.1-opencv4.5.1/Dockerfile @@ -81,7 +81,7 @@ RUN cd opencv && mkdir build && cd build && \ -D BUILD_opencv_videostab=OFF \ -D WITH_GSTREAMER=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ - .. && make -j6 && make install && ldconfig + .. && make -j$(nproc) && make install && ldconfig # Download OpenCvSharp RUN git clone https://github.com/shimat/opencvsharp.git && cd opencvsharp @@ -89,7 +89,7 @@ RUN git clone https://github.com/shimat/opencvsharp.git && cd opencvsharp # Install the Extern lib. RUN mkdir /opencvsharp/make && cd /opencvsharp/make && \ cmake -D CMAKE_INSTALL_PREFIX=/opencvsharp/make /opencvsharp/src && \ - make -j && make install && \ + make -j$(nproc) && make install && \ rm -rf /opencv && \ rm -rf /opencv_contrib && \ mkdir /artifacts && \ From e94ad030bcb8ff4fac36ce4a241795a174466629 Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Thu, 6 May 2021 13:41:38 +0100 Subject: [PATCH 023/340] Patch nuspec with version and build NuGet package --- .github/workflows/linux-arm.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index ef3d729ac..0ec0b7d14 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -39,6 +39,12 @@ jobs: mkdir artifacts_arm docker cp opencvsharp-linux-arm-tmp:/artifacts ./artifacts_arm + - name: Patch nuspec with version and build NuGet package + run: | + sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec + cp ./nuget/nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm + dotnet pack ./artifacts_arm/OpenCvSharp4.runtime.linux-arm.csproj + - uses: actions/upload-artifact@v2 with: name: artifacts_linux_arm From fdf869f045c00cecaf4286e841a3635682b64be5 Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Thu, 6 May 2021 14:23:52 +0100 Subject: [PATCH 024/340] Fix filepath --- .github/workflows/linux-arm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 0ec0b7d14..59a586493 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -42,7 +42,7 @@ jobs: - name: Patch nuspec with version and build NuGet package run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec - cp ./nuget/nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm + cp ./nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm dotnet pack ./artifacts_arm/OpenCvSharp4.runtime.linux-arm.csproj - uses: actions/upload-artifact@v2 From 8d35b391714eb318078b8b0ec1be5740176f9127 Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Thu, 6 May 2021 14:24:08 +0100 Subject: [PATCH 025/340] -o ./artifacts_arm --- .github/workflows/linux-arm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 59a586493..3902c673c 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -43,7 +43,7 @@ jobs: run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec cp ./nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm - dotnet pack ./artifacts_arm/OpenCvSharp4.runtime.linux-arm.csproj + dotnet pack ./artifacts_arm/OpenCvSharp4.runtime.linux-arm.csproj -o ./artifacts_arm - uses: actions/upload-artifact@v2 with: From e08ea5695b00ec12b3c74f98e681048f8e02dcfe Mon Sep 17 00:00:00 2001 From: Mike Roberts <2947595+m-roberts@users.noreply.github.com> Date: Thu, 6 May 2021 14:45:40 +0100 Subject: [PATCH 026/340] cd ./artifacts_arm && dotnet pack --- .github/workflows/linux-arm.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 3902c673c..5e7dbd592 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -43,7 +43,8 @@ jobs: run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec cp ./nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm - dotnet pack ./artifacts_arm/OpenCvSharp4.runtime.linux-arm.csproj -o ./artifacts_arm + cd ./artifacts_arm + dotnet pack OpenCvSharp4.runtime.linux-arm.csproj - uses: actions/upload-artifact@v2 with: From 2af4f3715d1363e50c226adb9a502a748db0ffc2 Mon Sep 17 00:00:00 2001 From: Jorge Capona Date: Thu, 6 May 2021 10:37:04 -0400 Subject: [PATCH 027/340] dotnet pack into artifacts_arm --- .github/workflows/linux-arm.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 5e7dbd592..ff6e2ef71 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -42,9 +42,10 @@ jobs: - name: Patch nuspec with version and build NuGet package run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec - cp ./nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm - cd ./artifacts_arm - dotnet pack OpenCvSharp4.runtime.linux-arm.csproj + cat nuget/OpenCvSharp4.runtime.linux-arm.nuspec + dotnet pack OpenCvSharp4.runtime.linux-arm.csproj -o artifacts_arm + cp nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm + ls artifacts_arm - uses: actions/upload-artifact@v2 with: From 6b68bfdacd0b7e90d4e7a4cd9fd4acaf55cf7928 Mon Sep 17 00:00:00 2001 From: Jorge Capona Date: Thu, 6 May 2021 11:03:25 -0400 Subject: [PATCH 028/340] Update path to csproj file --- .github/workflows/linux-arm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index ff6e2ef71..137d4013b 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -43,7 +43,7 @@ jobs: run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec cat nuget/OpenCvSharp4.runtime.linux-arm.nuspec - dotnet pack OpenCvSharp4.runtime.linux-arm.csproj -o artifacts_arm + dotnet pack nuget/OpenCvSharp4.runtime.linux-arm.csproj -o artifacts_arm cp nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm ls artifacts_arm From ab81700e5057676d62590738ba7ed38bb9fb6e0b Mon Sep 17 00:00:00 2001 From: Jorge Capona Date: Thu, 6 May 2021 12:49:54 -0400 Subject: [PATCH 029/340] Copy .so file to nuget/ before building --- .github/workflows/linux-arm.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 137d4013b..12ece64aa 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -43,6 +43,7 @@ jobs: run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec cat nuget/OpenCvSharp4.runtime.linux-arm.nuspec + cp artifacts_arm/artifacts/libOpenCvSharpExtern.so nuget/ dotnet pack nuget/OpenCvSharp4.runtime.linux-arm.csproj -o artifacts_arm cp nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm ls artifacts_arm From 32a0691847587801e3b8531ee57037f973499d16 Mon Sep 17 00:00:00 2001 From: Jorge Capona Date: Thu, 6 May 2021 13:40:07 -0400 Subject: [PATCH 030/340] Only upload .nupkg file as artifact --- .github/workflows/linux-arm.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 12ece64aa..6c2bd95ad 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -37,15 +37,14 @@ jobs: run: | docker create -ti --name opencvsharp-linux-arm-tmp opencvsharp-linux-arm bash mkdir artifacts_arm - docker cp opencvsharp-linux-arm-tmp:/artifacts ./artifacts_arm + docker cp opencvsharp-linux-arm-tmp:/artifacts . - name: Patch nuspec with version and build NuGet package run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec cat nuget/OpenCvSharp4.runtime.linux-arm.nuspec - cp artifacts_arm/artifacts/libOpenCvSharpExtern.so nuget/ + cp artifacts/libOpenCvSharpExtern.so nuget/ dotnet pack nuget/OpenCvSharp4.runtime.linux-arm.csproj -o artifacts_arm - cp nuget/OpenCvSharp4.runtime.linux-arm* ./artifacts_arm ls artifacts_arm - uses: actions/upload-artifact@v2 From fc0422052c8611b2c5463b788fbab55dc2fe5cd0 Mon Sep 17 00:00:00 2001 From: Jorge Capona Date: Thu, 6 May 2021 14:20:26 -0400 Subject: [PATCH 031/340] Remove unnecessary commands from build process --- .github/workflows/linux-arm.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 6c2bd95ad..25344b0da 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -36,16 +36,13 @@ jobs: - name: Extract build files from Docker instance run: | docker create -ti --name opencvsharp-linux-arm-tmp opencvsharp-linux-arm bash - mkdir artifacts_arm docker cp opencvsharp-linux-arm-tmp:/artifacts . - name: Patch nuspec with version and build NuGet package run: | sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.$(date '+%Y%m%d')<\/version>/" nuget/OpenCvSharp4.runtime.linux-arm.nuspec - cat nuget/OpenCvSharp4.runtime.linux-arm.nuspec cp artifacts/libOpenCvSharpExtern.so nuget/ dotnet pack nuget/OpenCvSharp4.runtime.linux-arm.csproj -o artifacts_arm - ls artifacts_arm - uses: actions/upload-artifact@v2 with: From 3cb3b91efff1e963dd9b93ed658008a07ec887ca Mon Sep 17 00:00:00 2001 From: shimat Date: Sat, 8 May 2021 21:02:02 +0900 Subject: [PATCH 032/340] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 672fe69f1..02de21ed9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -![opencvsharp](https://socialify.git.ci/shimat/opencvsharp/image?forks=1&language=1&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Light) +![opencvsharp](https://socialify.git.ci/shimat/opencvsharp/image?description=1&forks=1&language=1&owner=1&pattern=Plus&stargazers=1&theme=Light) + +OpenCV wrapper for .NET [![Github Actions Windows Status](https://github.com/shimat/opencvsharp/workflows/Windows%20Server%202019/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions Ubuntu Status](https://github.com/shimat/opencvsharp/workflows/Ubuntu%2018.04/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions MacOS Status](https://github.com/shimat/opencvsharp/workflows/macOS%2010.15/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![GitHub license](https://img.shields.io/github/license/shimat/opencvsharp.svg)](https://github.com/shimat/opencvsharp/blob/master/LICENSE) @@ -15,6 +17,7 @@ Old versions of OpenCvSharp are stored in [opencvsharp_2410](https://github.com/ |**OpenCvSharp4.runtime.uwp**| Native bindings for UWP (Universal Windows Platform) x64/x86/ARM | [![NuGet version](https://badge.fury.io/nu/OpenCvSharp4.runtime.uwp.svg)](https://badge.fury.io/nu/OpenCvSharp4.runtime.uwp) | |**OpenCvSharp4.runtime.ubuntu.18.04-x64**| Native bindings for Ubuntu 18.04 x64 | [![NuGet version](https://badge.fury.io/nu/OpenCvSharp4.runtime.ubuntu.18.04-x64.svg)](https://badge.fury.io/nu/OpenCvSharp4.runtime.ubuntu.18.04-x64) | |**OpenCvSharp4.runtime.osx.10.15-x64**| Native bindings for macOS 10.15 x64 | [![NuGet version](https://badge.fury.io/nu/OpenCvSharp4.runtime.osx.10.15-x64.svg)](https://www.nuget.org/packages/OpenCvSharp4.runtime.osx.10.15-x64/) | +|**OpenCvSharp4.runtime.linux-arm**| Native bindings for Linux Arm | [![NuGet version](https://badge.fury.io/nu/OpenCvSharp4.runtime.linux-arm.svg)](https://www.nuget.org/packages/OpenCvSharp4.runtime.linux-arm/) | Native binding (OpenCvSharpExtern.dll / libOpenCvSharpExtern.so) is required to work OpenCvSharp. To use OpenCvSharp, you should add both `OpenCvSharp4` and `OpenCvSharp4.runtime.*` packages to your project. Currently, native bindings for Windows, UWP, Ubuntu 18.04 and macOS are released. From ac2a09e18c314175cd9c44fdeb595497652a2340 Mon Sep 17 00:00:00 2001 From: shimat Date: Sat, 8 May 2021 21:02:19 +0900 Subject: [PATCH 033/340] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 02de21ed9..cc5321ee2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ ![opencvsharp](https://socialify.git.ci/shimat/opencvsharp/image?description=1&forks=1&language=1&owner=1&pattern=Plus&stargazers=1&theme=Light) -OpenCV wrapper for .NET - [![Github Actions Windows Status](https://github.com/shimat/opencvsharp/workflows/Windows%20Server%202019/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions Ubuntu Status](https://github.com/shimat/opencvsharp/workflows/Ubuntu%2018.04/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![Github Actions MacOS Status](https://github.com/shimat/opencvsharp/workflows/macOS%2010.15/badge.svg)](https://github.com/shimat/opencvsharp/actions) [![GitHub license](https://img.shields.io/github/license/shimat/opencvsharp.svg)](https://github.com/shimat/opencvsharp/blob/master/LICENSE) Old versions of OpenCvSharp are stored in [opencvsharp_2410](https://github.com/shimat/opencvsharp_2410). From 5b311601ba0430593dab0bd35852f1e013cb6d8f Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 30 May 2021 00:33:08 +0900 Subject: [PATCH 034/340] add run_length_morphology tests --- .../Modules/ximgproc/CvXImgProc.cs | 2 +- .../OpenCvSharp.Tests.csproj | 4 +- .../ximgproc/XimgProcTest.cs | 47 +++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs b/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs index 16daba466..1b80ccb92 100644 --- a/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs +++ b/src/OpenCvSharp/Modules/ximgproc/CvXImgProc.cs @@ -117,7 +117,7 @@ public static SelectiveSearchSegmentationStrategyMultiple CreateSelectiveSearchS } /// - /// // run_length_morphology.hpp + /// run_length_morphology.hpp /// public static class RL { diff --git a/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj b/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj index baea5c9f0..1ad386942 100644 --- a/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj +++ b/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj @@ -53,8 +53,8 @@ - - + + diff --git a/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs b/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs index 704bd4be1..e70deb7d6 100644 --- a/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs @@ -134,6 +134,53 @@ public void EdgePreservingFilter() ShowImagesWhenDebugMode(src, dst); } + // run_length_morphology.hpp + + [Fact] + public void RLThreshold() + { + using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var dst = new Mat(); + + CvXImgProc.RL.Threshold(src, dst, 128, ThresholdTypes.Binary); + + Assert.False(dst.Empty()); + Assert.Equal(MatType.CV_32SC3, dst.Type()); + } + + [Fact] + public void RLGetStructuringElement() + { + using var se = CvXImgProc.RL.GetStructuringElement(MorphShapes.Cross, new Size(3, 3)); + + Assert.False(se.Empty()); + Assert.Equal(new Size(1, 4), se.Size()); + Assert.Equal(MatType.CV_32SC3, se.Type()); + } + + [Fact] + public void RLDilateErode() + { + using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var binary = new Mat(); + using var dilate = new Mat(); + using var erode = new Mat(); + + CvXImgProc.RL.Threshold(src, binary, 128, ThresholdTypes.Binary); + + using var se = CvXImgProc.RL.GetStructuringElement(MorphShapes.Rect, new Size(3, 3)); + CvXImgProc.RL.Dilate(binary, dilate, se); + CvXImgProc.RL.Erode(binary, erode, se); + + Assert.False(dilate.Empty()); + Assert.Equal(new Size(1, 1785), dilate.Size()); + Assert.Equal(MatType.CV_32SC3, dilate.Type()); + + Assert.False(erode.Empty()); + Assert.Equal(new Size(1, 1799), erode.Size()); + Assert.Equal(MatType.CV_32SC3, erode.Type()); + } + // peilin.hpp [Fact] From 1930b7d3b1444e85ca21b4911ee92fc0c8ec8e3f Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 30 May 2021 10:31:18 +0900 Subject: [PATCH 035/340] Add CalibrateRobertson --- .../photo/NativeMethods_photo_HDR.cs | 45 ++++++- .../Modules/photo/CalibrateDebevec.cs | 58 ++++++++- .../Modules/photo/CalibrateRobertson.cs | 117 ++++++++++++++++++ src/OpenCvSharpExtern/photo_HDR.h | 89 +++++++++++-- 4 files changed, 296 insertions(+), 13 deletions(-) create mode 100644 src/OpenCvSharp/Modules/photo/CalibrateRobertson.cs diff --git a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/photo/NativeMethods_photo_HDR.cs b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/photo/NativeMethods_photo_HDR.cs index 8458521e8..354f4b352 100644 --- a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/photo/NativeMethods_photo_HDR.cs +++ b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/photo/NativeMethods_photo_HDR.cs @@ -11,23 +11,60 @@ namespace OpenCvSharp.Internal { static partial class NativeMethods { + // CalibrateDebevec + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus photo_createCalibrateDebevec(int samples, float lambda, int random, out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_Ptr_CalibrateDebevec_delete(IntPtr obj); [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern ExceptionStatus photo_createCalibrateRobertson(int maxIter, float threshold, out IntPtr returnValue); + public static extern ExceptionStatus photo_Ptr_CalibrateDebevec_get(IntPtr obj, out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateDebevec_getLambda(IntPtr obj, out float returnValue); [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern ExceptionStatus photo_Ptr_CalibrateDebevec_delete(IntPtr obj); + public static extern ExceptionStatus photo_CalibrateDebevec_setLambda(IntPtr obj, float value); [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern ExceptionStatus photo_Ptr_CalibrateRobertson_delete(IntPtr obj); + public static extern ExceptionStatus photo_CalibrateDebevec_getSamples(IntPtr obj, out int returnValue); [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - public static extern ExceptionStatus photo_Ptr_CalibrateDebevec_get(IntPtr obj, out IntPtr returnValue); + public static extern ExceptionStatus photo_CalibrateDebevec_setSamples(IntPtr obj, int value); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateDebevec_getRandom(IntPtr obj, out int returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateDebevec_setRandom(IntPtr obj, int value); + + // CalibrateRobertson + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_createCalibrateRobertson(int maxIter, float threshold, out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_Ptr_CalibrateRobertson_delete(IntPtr obj); [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus photo_Ptr_CalibrateRobertson_get(IntPtr obj, out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateRobertson_getMaxIter(IntPtr obj, out int returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateRobertson_setMaxIter(IntPtr obj, int value); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateRobertson_getThreshold(IntPtr obj, out float returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateRobertson_setThreshold(IntPtr obj, float value); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus photo_CalibrateRobertson_getRadiance(IntPtr obj, IntPtr returnValue); [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus photo_CalibrateCRF_process( diff --git a/src/OpenCvSharp/Modules/photo/CalibrateDebevec.cs b/src/OpenCvSharp/Modules/photo/CalibrateDebevec.cs index 30209c21d..d8842ba0b 100644 --- a/src/OpenCvSharp/Modules/photo/CalibrateDebevec.cs +++ b/src/OpenCvSharp/Modules/photo/CalibrateDebevec.cs @@ -4,14 +4,14 @@ namespace OpenCvSharp { /// - /// The base class for camera response calibration algorithms. + /// CalibrateDebevec object /// public class CalibrateDebevec : CalibrateCRF { private Ptr? ptrObj; /// - /// Creates instance by raw pointer cv::ml::Boost* + /// Creates instance by raw pointer cv::CalibrateDebevec* /// protected CalibrateDebevec(IntPtr p) { @@ -44,6 +44,60 @@ protected override void DisposeManaged() ptrObj = null; base.DisposeManaged(); } + + /// + /// + /// + public float Lambda + { + get + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateDebevec_getLambda(ptr, out var ret)); + return ret; + } + set + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateDebevec_setLambda(ptr, value)); + } + } + + /// + /// + /// + public int Samples + { + get + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateDebevec_getSamples(ptr, out var ret)); + return ret; + } + set + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateDebevec_setSamples(ptr, value)); + } + } + + /// + /// + /// + public bool Random + { + get + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateDebevec_getRandom(ptr, out var ret)); + return ret != 0; + } + set + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateDebevec_setRandom(ptr, value ? 1 : 0)); + } + } internal class Ptr : OpenCvSharp.Ptr { diff --git a/src/OpenCvSharp/Modules/photo/CalibrateRobertson.cs b/src/OpenCvSharp/Modules/photo/CalibrateRobertson.cs new file mode 100644 index 000000000..e4bd9bf23 --- /dev/null +++ b/src/OpenCvSharp/Modules/photo/CalibrateRobertson.cs @@ -0,0 +1,117 @@ +using System; +using OpenCvSharp.Internal; + +namespace OpenCvSharp +{ + /// + /// CalibrateRobertson object + /// + public class CalibrateRobertson : CalibrateCRF + { + private Ptr? ptrObj; + + /// + /// Creates instance by raw pointer cv::CalibrateRobertson* + /// + protected CalibrateRobertson(IntPtr p) + { + ptrObj = new Ptr(p); + ptr = ptrObj.Get(); + } + + /// + /// Creates CalibrateRobertson object + /// + /// maximal number of Gauss-Seidel solver iterations. + /// target difference between results of two successive steps of the minimization. + /// + public static CalibrateRobertson Create(int maxIter = 30, float threshold = 0.01f) + { + NativeMethods.HandleException( + NativeMethods.photo_createCalibrateRobertson(maxIter, threshold, out var ptr)); + return new CalibrateRobertson(ptr); + } + + /// + /// Releases managed resources + /// + protected override void DisposeManaged() + { + ptrObj?.Dispose(); + ptrObj = null; + base.DisposeManaged(); + } + + /// + /// + /// + public int MaxIter + { + get + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateRobertson_getMaxIter(ptr, out var ret)); + return ret; + } + set + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateRobertson_setMaxIter(ptr, value)); + } + } + + /// + /// + /// + public float Threshold + { + get + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateRobertson_getThreshold(ptr, out var ret)); + return ret; + } + set + { + NativeMethods.HandleException( + NativeMethods.photo_CalibrateRobertson_setThreshold(ptr, value)); + } + } + + /// + /// + /// + public Mat Radiance + { + get + { + var ret = new Mat(); + NativeMethods.HandleException( + NativeMethods.photo_CalibrateRobertson_getRadiance(ptr, ret.CvPtr)); + return ret; + } + } + + internal class Ptr : OpenCvSharp.Ptr + { + public Ptr(IntPtr ptr) : base(ptr) + { + } + + public override IntPtr Get() + { + NativeMethods.HandleException( + NativeMethods.photo_Ptr_CalibrateRobertson_get(ptr, out var ret)); + GC.KeepAlive(this); + return ret; + } + + protected override void DisposeUnmanaged() + { + NativeMethods.HandleException( + NativeMethods.photo_Ptr_CalibrateRobertson_delete(ptr)); + base.DisposeUnmanaged(); + } + } + } +} diff --git a/src/OpenCvSharpExtern/photo_HDR.h b/src/OpenCvSharpExtern/photo_HDR.h index db81bbac6..af9bb3e0d 100644 --- a/src/OpenCvSharpExtern/photo_HDR.h +++ b/src/OpenCvSharpExtern/photo_HDR.h @@ -14,6 +14,59 @@ CVAPI(ExceptionStatus) photo_createCalibrateDebevec( END_WRAP } +CVAPI(ExceptionStatus) photo_Ptr_CalibrateDebevec_delete(cv::Ptr *obj) +{ + BEGIN_WRAP + delete obj; + END_WRAP +} + +CVAPI(ExceptionStatus) photo_Ptr_CalibrateDebevec_get(cv::Ptr *obj, cv::CalibrateDebevec **returnValue) +{ + BEGIN_WRAP + *returnValue = obj->get(); + END_WRAP +} + +CVAPI(ExceptionStatus) photo_CalibrateDebevec_getLambda(cv::CalibrateDebevec *obj, float *returnValue) +{ + BEGIN_WRAP + *returnValue = obj->getLambda(); + END_WRAP +} +CVAPI(ExceptionStatus) photo_CalibrateDebevec_setLambda(cv::CalibrateDebevec *obj, float value) +{ + BEGIN_WRAP + obj->setLambda(value); + END_WRAP +} + +CVAPI(ExceptionStatus) photo_CalibrateDebevec_getSamples(cv::CalibrateDebevec *obj, int *returnValue) +{ + BEGIN_WRAP + *returnValue = obj->getLambda(); + END_WRAP +} +CVAPI(ExceptionStatus) photo_CalibrateDebevec_setSamples(cv::CalibrateDebevec *obj, int value) +{ + BEGIN_WRAP + obj->setLambda(value); + END_WRAP +} + +CVAPI(ExceptionStatus) photo_CalibrateDebevec_getRandom(cv::CalibrateDebevec *obj, int *returnValue) +{ + BEGIN_WRAP + *returnValue = obj->getRandom() ? 1 : 0; + END_WRAP +} +CVAPI(ExceptionStatus) photo_CalibrateDebevec_setRandom(cv::CalibrateDebevec *obj, int value) +{ + BEGIN_WRAP + obj->setRandom(value != 0); + END_WRAP +} + CVAPI(ExceptionStatus) photo_createCalibrateRobertson( int max_iter, float threshold, cv::Ptr **returnValue) { @@ -22,32 +75,54 @@ CVAPI(ExceptionStatus) photo_createCalibrateRobertson( END_WRAP } -CVAPI(ExceptionStatus) photo_Ptr_CalibrateDebevec_delete(cv::Ptr *obj) +CVAPI(ExceptionStatus) photo_Ptr_CalibrateRobertson_delete(cv::Ptr *obj) { BEGIN_WRAP delete obj; END_WRAP } -CVAPI(ExceptionStatus) photo_Ptr_CalibrateRobertson_delete(cv::Ptr *obj) + +CVAPI(ExceptionStatus) photo_Ptr_CalibrateRobertson_get(cv::Ptr *obj, cv::CalibrateRobertson **returnValue) { BEGIN_WRAP - delete obj; + *returnValue = obj->get(); END_WRAP } -CVAPI(ExceptionStatus) photo_Ptr_CalibrateDebevec_get(cv::Ptr *obj, cv::CalibrateDebevec **returnValue) +CVAPI(ExceptionStatus) photo_CalibrateRobertson_getMaxIter(cv::CalibrateRobertson *obj, int *returnValue) { BEGIN_WRAP - *returnValue = obj->get(); + *returnValue = obj->getMaxIter(); END_WRAP } -CVAPI(ExceptionStatus) photo_Ptr_CalibrateRobertson_get(cv::Ptr *obj, cv::CalibrateRobertson **returnValue) +CVAPI(ExceptionStatus) photo_CalibrateRobertson_setMaxIter(cv::CalibrateRobertson *obj, int value) { BEGIN_WRAP - *returnValue = obj->get(); + obj->setMaxIter(value); + END_WRAP +} + +CVAPI(ExceptionStatus) photo_CalibrateRobertson_getThreshold(cv::CalibrateRobertson *obj, float *returnValue) +{ + BEGIN_WRAP + *returnValue = obj->getThreshold(); + END_WRAP +} +CVAPI(ExceptionStatus) photo_CalibrateRobertson_setThreshold(cv::CalibrateRobertson *obj, float value) +{ + BEGIN_WRAP + obj->setThreshold(value); + END_WRAP +} + +CVAPI(ExceptionStatus) photo_CalibrateRobertson_getRadiance(cv::CalibrateRobertson *obj, cv::Mat *returnValue) +{ + BEGIN_WRAP + obj->getRadiance().copyTo(*returnValue); END_WRAP } + CVAPI(ExceptionStatus) photo_CalibrateCRF_process( cv::CalibrateCRF *obj, cv::Mat ** srcImgs, int srcImgsLength, cv::_OutputArray *dst, float* times) From c925abadf53cc82396c4be2bbfe839c773235113 Mon Sep 17 00:00:00 2001 From: shimat Date: Wed, 2 Jun 2021 20:17:54 +0900 Subject: [PATCH 036/340] Update docfx.yml --- .github/workflows/docfx.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docfx.yml b/.github/workflows/docfx.yml index ca8d6d4e2..ebeeba89b 100644 --- a/.github/workflows/docfx.yml +++ b/.github/workflows/docfx.yml @@ -4,11 +4,12 @@ on: push: branches: - master + workflow_dispatch: jobs: build: - runs-on: windows-2019 + runs-on: windows-latest steps: - name: Checkout @@ -16,6 +17,14 @@ jobs: with: fetch-depth: 1 + - name: Install .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 5.0.x + + - name: Setup MSBuild.exe + uses: microsoft/setup-msbuild@v1.0.2 + - name: DocFX shell: cmd run: | From f17bcde870dfe4542dc2d86362a1413b2e43b71d Mon Sep 17 00:00:00 2001 From: Aven Date: Fri, 4 Jun 2021 11:24:11 +0800 Subject: [PATCH 037/340] add missing native methods for hardware acceleration --- .../NativeMethods/NativeMethods_videoio.cs | 17 ++++++++ src/OpenCvSharpExtern/videoio.h | 42 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods_videoio.cs b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods_videoio.cs index 6b66f7b91..f0ba7f62c 100644 --- a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods_videoio.cs +++ b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods_videoio.cs @@ -22,6 +22,13 @@ public static extern ExceptionStatus videoio_VideoCapture_new2( [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus videoio_VideoCapture_new3(int device, int apiPreference, out IntPtr returnValue); + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus videoio_VideoCapture_new4( + [MarshalAs(UnmanagedType.LPStr)] string filename, int apiPreference, [In] int[] @params, int paramsLength, out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus videoio_VideoCapture_new5(int device, int apiPreference, [In] int[] @params, int paramsLength, out IntPtr returnValue); + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus videoio_VideoCapture_delete(IntPtr obj); @@ -93,6 +100,16 @@ public static extern ExceptionStatus videoio_VideoWriter_new3( [MarshalAs(UnmanagedType.LPStr)] string filename, int apiPreference, int fourcc, double fps, Size frameSize, int isColor, out IntPtr returnValue); + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus videoio_VideoWriter_new4( + [MarshalAs(UnmanagedType.LPStr)] string filename, int fourcc, double fps, + Size frameSize, [In] int[] @params, int paramsLength, out IntPtr returnValue); + + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + public static extern ExceptionStatus videoio_VideoWriter_new5( + [MarshalAs(UnmanagedType.LPStr)] string filename, int apiPreference, int fourcc, double fps, + Size frameSize, [In] int[] @params, int paramsLength, out IntPtr returnValue); + [Pure, DllImport(DllExtern, CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] public static extern ExceptionStatus videoio_VideoWriter_delete(IntPtr obj); diff --git a/src/OpenCvSharpExtern/videoio.h b/src/OpenCvSharpExtern/videoio.h index 782d9c5a0..e41b40b8e 100644 --- a/src/OpenCvSharpExtern/videoio.h +++ b/src/OpenCvSharpExtern/videoio.h @@ -28,6 +28,24 @@ CVAPI(ExceptionStatus) videoio_VideoCapture_new3(int device, int apiPreference, END_WRAP } +CVAPI(ExceptionStatus) videoio_VideoCapture_new4(const char* filename, int apiPreference, int* params, int paramsLength, cv::VideoCapture** returnValue) +{ + BEGIN_WRAP + std::vector paramsVec; + paramsVec.assign(params, params + paramsLength); + * returnValue = new cv::VideoCapture(filename, apiPreference, paramsVec); + END_WRAP +} +CVAPI(ExceptionStatus) videoio_VideoCapture_new5(int device, int apiPreference, int* params, int paramsLength, cv::VideoCapture** returnValue) +{ + BEGIN_WRAP + std::vector paramsVec; + paramsVec.assign(params, params + paramsLength); + * returnValue = new cv::VideoCapture(device, apiPreference, paramsVec); + END_WRAP +} + + CVAPI(ExceptionStatus) videoio_VideoCapture_delete(cv::VideoCapture *obj) { BEGIN_WRAP @@ -189,6 +207,30 @@ CVAPI(ExceptionStatus) videoio_VideoWriter_new3( *returnValue = new cv::VideoWriter(filename, apiPreference, fourcc, fps, cpp(frameSize), isColor != 0); END_WRAP } +CVAPI(ExceptionStatus) videoio_VideoWriter_new4( + const char* filename, + int fourcc, double fps, + MyCvSize frameSize, int* params, int paramsLength, + cv::VideoWriter** returnValue) +{ + BEGIN_WRAP + std::vector paramsVec; + paramsVec.assign(params, params + paramsLength); + * returnValue = new cv::VideoWriter(filename, fourcc, fps, cpp(frameSize), paramsVec); + END_WRAP +} +CVAPI(ExceptionStatus) videoio_VideoWriter_new5( + const char* filename, int apiPreference, + int fourcc, double fps, + MyCvSize frameSize, int* params, int paramsLength, + cv::VideoWriter** returnValue) +{ + BEGIN_WRAP + std::vector paramsVec; + paramsVec.assign(params, params + paramsLength); + * returnValue = new cv::VideoWriter(filename, apiPreference, fourcc, fps, cpp(frameSize), paramsVec); + END_WRAP +} CVAPI(ExceptionStatus) videoio_VideoWriter_delete(cv::VideoWriter *obj) { From 6d9258c10f5b9c74d9436b6d9f585df257b683fc Mon Sep 17 00:00:00 2001 From: Aven Date: Fri, 4 Jun 2021 12:30:14 +0800 Subject: [PATCH 038/340] add some missing properties of video Capture/Writer add video Capture/Writer parameter for hardware acceleration add methods of video Capture/Writer for hardware acceleration --- .../videoio/Enum/VideoAccelerationType.cs | 39 +++++++ .../Modules/videoio/Enum/VideoCapturePara.cs | 50 +++++++++ .../videoio/Enum/VideoCaptureProperties.cs | 12 ++ .../Modules/videoio/Enum/VideoWriterPara.cs | 50 +++++++++ .../videoio/Enum/VideoWriterProperties.cs | 23 ++++ .../Modules/videoio/VideoCapture.cs | 104 ++++++++++++++++++ .../Modules/videoio/VideoWriter.cs | 96 ++++++++++++++++ 7 files changed, 374 insertions(+) create mode 100644 src/OpenCvSharp/Modules/videoio/Enum/VideoAccelerationType.cs create mode 100644 src/OpenCvSharp/Modules/videoio/Enum/VideoCapturePara.cs create mode 100644 src/OpenCvSharp/Modules/videoio/Enum/VideoWriterPara.cs diff --git a/src/OpenCvSharp/Modules/videoio/Enum/VideoAccelerationType.cs b/src/OpenCvSharp/Modules/videoio/Enum/VideoAccelerationType.cs new file mode 100644 index 000000000..c6063480e --- /dev/null +++ b/src/OpenCvSharp/Modules/videoio/Enum/VideoAccelerationType.cs @@ -0,0 +1,39 @@ + +namespace OpenCvSharp +{ + /// + /// Video Acceleration type + /// Used as value in #CAP_PROP_HW_ACCELERATION and #VIDEOWRITER_PROP_HW_ACCELERATION + /// note In case of FFmpeg backend, it translated to enum AVHWDeviceType (https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext.h) + /// + public enum VideoAccelerationType + { + /// + /// Do not require any specific H/W acceleration, prefer software processing. + /// Reading of this value means that special H/W accelerated handling is not added or not detected by OpenCV. + /// + None = 0, + + /// + /// Prefer to use H/W acceleration. If no one supported, then fallback to software processing. + /// note H/W acceleration may require special configuration of used environment. + /// note Results in encoding scenario may differ between software and hardware accelerated encoders. + /// + Any = 1, + + /// + /// DirectX 11 + /// + D3D11 = 2, + + /// + /// VAAPI + /// + VAAPI = 3, + + /// + /// libmfx (Intel MediaSDK/oneVPL) + /// + MFX = 4, + } +} diff --git a/src/OpenCvSharp/Modules/videoio/Enum/VideoCapturePara.cs b/src/OpenCvSharp/Modules/videoio/Enum/VideoCapturePara.cs new file mode 100644 index 000000000..d93388ce9 --- /dev/null +++ b/src/OpenCvSharp/Modules/videoio/Enum/VideoCapturePara.cs @@ -0,0 +1,50 @@ +using System; + +namespace OpenCvSharp +{ + /// + /// Parameters of VideoCature for hardware acceleration + /// Please check the link below for current HW acceleration types support matrix + /// https://github.com/opencv/opencv/wiki/Video-IO-hardware-acceleration + /// + [Serializable] + public record VideoCapturePara + { + /// + /// Used as value in #CAP_PROP_HW_ACCELERATION and #VIDEOWRITER_PROP_HW_ACCELERATION + /// note In case of FFmpeg backend, it translated to enum AVHWDeviceType (https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext.h) + /// + public VideoAccelerationType AccelerationType { get; } + + /// + /// Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. + /// + public int HwDeviceIndex { get; } + + /// + /// Constructor, parameter of VideoCature for hardware acceleration + /// + public VideoCapturePara() + { + AccelerationType = VideoAccelerationType.Any; + HwDeviceIndex = -1; + } + + /// + /// Constructor, parameter of VideoCature for hardware acceleration + /// + /// Video Acceleration type + /// Hardware device index + public VideoCapturePara(VideoAccelerationType videoAcceleration, int deviceIndex) + { + AccelerationType = videoAcceleration; + HwDeviceIndex = deviceIndex; + } + + /// + /// Get parameters of VideoCature for hardware acceleration + /// + public int[] Parameters => new[] { (int)VideoCaptureProperties.HwAcceleration, (int)AccelerationType, + (int)VideoCaptureProperties.HwDevice, HwDeviceIndex }; + } +} diff --git a/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs b/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs index 2f070bc9c..d88011ede 100644 --- a/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs +++ b/src/OpenCvSharp/Modules/videoio/Enum/VideoCaptureProperties.cs @@ -262,6 +262,18 @@ public enum VideoCaptureProperties /// OrientationAuto = 49, + /// + /// (open-only) Hardware acceleration type (see VideoAccelerationType). + /// Setting supported only via params parameter in cv::VideoCapture constructor / .open() method. + /// Default value is backend-specific. + /// + HwAcceleration = 50, + + /// + /// (open-only) Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. + /// + HwDevice = 51, + #endregion #region OpenNI diff --git a/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterPara.cs b/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterPara.cs new file mode 100644 index 000000000..8108c330e --- /dev/null +++ b/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterPara.cs @@ -0,0 +1,50 @@ +using System; + +namespace OpenCvSharp +{ + /// + /// Parameters of VideoWriter for hardware acceleration + /// Please check the link below for current HW acceleration types support matrix + /// https://github.com/opencv/opencv/wiki/Video-IO-hardware-acceleration + /// + [Serializable] + public record VideoWriterPara + { + /// + /// Used as value in #CAP_PROP_HW_ACCELERATION and #VIDEOWRITER_PROP_HW_ACCELERATION + /// note In case of FFmpeg backend, it translated to enum AVHWDeviceType (https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext.h) + /// + public VideoAccelerationType AccelerationType { get; } + + /// + /// Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. + /// + public int HwDeviceIndex { get; } + + /// + /// Constructor, parameter of VideoWriter for hardware acceleration + /// + public VideoWriterPara() + { + AccelerationType = VideoAccelerationType.Any; + HwDeviceIndex = -1; + } + + /// + /// Constructor, parameter of VideoWriter for hardware acceleration + /// + /// Video Acceleration type + /// Hardware device index + public VideoWriterPara(VideoAccelerationType videoAcceleration, int deviceIndex) + { + AccelerationType = videoAcceleration; + HwDeviceIndex = deviceIndex; + } + + /// + /// Get parameters of VideoWriter for hardware acceleration + /// + public int[] Parameters => new[] { (int)VideoWriterProperties.HwAcceleration, (int)AccelerationType, + (int)VideoWriterProperties.HwDevice, HwDeviceIndex }; + } +} diff --git a/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterProperties.cs b/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterProperties.cs index 91299be5e..1d214304d 100644 --- a/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterProperties.cs +++ b/src/OpenCvSharp/Modules/videoio/Enum/VideoWriterProperties.cs @@ -21,5 +21,28 @@ public enum VideoWriterProperties /// Number of stripes for parallel encoding. -1 for auto detection. /// NStripes = 3, + + /// + /// If it is not zero, the encoder will expect and encode color frames, otherwise it will work with grayscale frames. + /// + IsColor = 4, + + /// + /// Defaults to CV_8U. + /// + Depth = 5, + + /// + /// (open-only) Hardware acceleration type (see VideoAccelerationType). + /// Setting supported only via params parameter in cv::VideoCapture constructor / .open() method. + /// Default value is backend-specific. + /// + HwAcceleration = 6, + + /// + /// (open-only) Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. + /// + HwDevice = 7, + } } \ No newline at end of file diff --git a/src/OpenCvSharp/Modules/videoio/VideoCapture.cs b/src/OpenCvSharp/Modules/videoio/VideoCapture.cs index aea314156..4b256c428 100644 --- a/src/OpenCvSharp/Modules/videoio/VideoCapture.cs +++ b/src/OpenCvSharp/Modules/videoio/VideoCapture.cs @@ -54,6 +54,52 @@ public VideoCapture(int index, VideoCaptureAPIs apiPreference = VideoCaptureAPIs captureType = CaptureType.Camera; } + /// + /// Opens a camera for video capturing with API Preference and parameters + /// + /// id of the video capturing device to open. To open default camera using default backend just pass 0. + /// (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) + /// preferred Capture API backends to use. Can be used to enforce a specific reader implementation + /// if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. + /// The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`. + /// See cv::VideoCaptureProperties + /// + public VideoCapture(int index, VideoCaptureAPIs apiPreference, int[]? prms = null) + { + if (prms == null) + prms = Array.Empty(); + + NativeMethods.HandleException( + NativeMethods.videoio_VideoCapture_new5(index, (int)apiPreference, prms, prms.Length, out ptr)); + + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoCapture"); + + captureType = CaptureType.Camera; + } + + /// + /// Opens a camera for video capturing with API Preference and parameters + /// + /// id of the video capturing device to open. To open default camera using default backend just pass 0. + /// (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) + /// preferred Capture API backends to use. Can be used to enforce a specific reader implementation + /// if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. + /// Parameters of VideoCature for hardware acceleration + /// + public VideoCapture(int index, VideoCaptureAPIs apiPreference, VideoCapturePara prms) + { + var p = prms.Parameters; + + NativeMethods.HandleException( + NativeMethods.videoio_VideoCapture_new5(index, (int)apiPreference, p, p.Length, out ptr)); + + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoCapture"); + + captureType = CaptureType.Camera; + } + /// /// Opens a camera for video capturing /// @@ -93,6 +139,64 @@ public VideoCapture(string fileName, VideoCaptureAPIs apiPreference = VideoCaptu captureType = CaptureType.File; } + /// + /// Opens a video file or a capturing device or an IP video stream for video capturing with API Preference + /// + /// it can be: + /// - name of video file (eg. `video.avi`) + /// - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) + /// - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). + /// Note that each video stream or IP camera feed has its own URL scheme. Please refer to the + /// documentation of source stream to know the right URL. + /// apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader + /// implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. + /// The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`. + /// See cv::VideoCaptureProperties + /// + public VideoCapture(string fileName, VideoCaptureAPIs apiPreference, int[]? prms = null) + { + if (string.IsNullOrEmpty(fileName)) + throw new ArgumentNullException(nameof(fileName)); + if (prms == null) + prms = Array.Empty(); + + NativeMethods.HandleException( + NativeMethods.videoio_VideoCapture_new4(fileName, (int)apiPreference, prms, prms.Length, out ptr)); + + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoCapture"); + + captureType = CaptureType.File; + } + + /// + /// Opens a video file or a capturing device or an IP video stream for video capturing with API Preference + /// + /// it can be: + /// - name of video file (eg. `video.avi`) + /// - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) + /// - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). + /// Note that each video stream or IP camera feed has its own URL scheme. Please refer to the + /// documentation of source stream to know the right URL. + /// apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader + /// implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. + /// Parameters of VideoCature for hardware acceleration + /// + public VideoCapture(string fileName, VideoCaptureAPIs apiPreference, VideoCapturePara prms) + { + if (string.IsNullOrEmpty(fileName)) + throw new ArgumentNullException(nameof(fileName)); + var p = prms.Parameters; + + NativeMethods.HandleException( + NativeMethods.videoio_VideoCapture_new4(fileName, (int)apiPreference, p, p.Length, out ptr)); + + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoCapture"); + + captureType = CaptureType.File; + } + /// /// Opens a video file or a capturing device or an IP video stream for video capturing with API Preference /// diff --git a/src/OpenCvSharp/Modules/videoio/VideoWriter.cs b/src/OpenCvSharp/Modules/videoio/VideoWriter.cs index b39838b3b..e0b892727 100644 --- a/src/OpenCvSharp/Modules/videoio/VideoWriter.cs +++ b/src/OpenCvSharp/Modules/videoio/VideoWriter.cs @@ -71,6 +71,102 @@ public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourc throw new OpenCvSharpException("Failed to create VideoWriter"); } + /// + /// Creates video writer structure. + /// + /// Name of the output video file. + /// 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. + /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. + /// Frame rate of the created video stream. + /// Size of video frames. + /// The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) + /// see cv::VideoWriterProperties + /// + public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, int[]? prms = null) + { + FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); + Fps = fps; + FrameSize = frameSize; + if (prms == null) + prms = Array.Empty(); + NativeMethods.HandleException( + NativeMethods.videoio_VideoWriter_new4(fileName, (int)fourcc, fps, frameSize, prms, prms.Length, out ptr)); + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoWriter"); + } + + /// + /// Creates video writer structure. + /// + /// Name of the output video file. + /// 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. + /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. + /// Frame rate of the created video stream. + /// Size of video frames. + /// Parameters of VideoWriter for hardware acceleration + /// + public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, VideoWriterPara prms) + { + FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); + Fps = fps; + FrameSize = frameSize; + var p = prms.Parameters; + NativeMethods.HandleException( + NativeMethods.videoio_VideoWriter_new4(fileName, (int)fourcc, fps, frameSize, p, p.Length, out ptr)); + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoWriter"); + } + + /// + /// Creates video writer structure. + /// + /// Name of the output video file. + /// allows to specify API backends to use. Can be used to enforce a specific reader implementation + /// if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. + /// 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. + /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. + /// Frame rate of the created video stream. + /// Size of video frames. + /// The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) + /// see cv::VideoWriterProperties + /// + public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, int[]? prms = null) + { + FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); + Fps = fps; + FrameSize = frameSize; + if (prms == null) + prms = Array.Empty(); + NativeMethods.HandleException( + NativeMethods.videoio_VideoWriter_new5(fileName, (int)apiPreference, (int)fourcc, fps, frameSize, prms, prms.Length, out ptr)); + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoWriter"); + } + + /// + /// Creates video writer structure. + /// + /// Name of the output video file. + /// allows to specify API backends to use. Can be used to enforce a specific reader implementation + /// if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. + /// 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. + /// Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. + /// Frame rate of the created video stream. + /// Size of video frames. + /// Parameters of VideoWriter for hardware acceleration + /// + public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, VideoWriterPara prms) + { + FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); + Fps = fps; + FrameSize = frameSize; + var p = prms.Parameters; + NativeMethods.HandleException( + NativeMethods.videoio_VideoWriter_new5(fileName, (int)apiPreference, (int)fourcc, fps, frameSize, p, p.Length, out ptr)); + if (ptr == IntPtr.Zero) + throw new OpenCvSharpException("Failed to create VideoWriter"); + } + /// /// Initializes from native pointer /// From 0dd7b54f278e56049e1611e70520e614f419c137 Mon Sep 17 00:00:00 2001 From: Aven Date: Mon, 7 Jun 2021 01:27:37 +0800 Subject: [PATCH 039/340] small fix for overloaded method --- src/OpenCvSharp/Modules/videoio/VideoCapture.cs | 9 ++------- src/OpenCvSharp/Modules/videoio/VideoWriter.cs | 8 ++------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/OpenCvSharp/Modules/videoio/VideoCapture.cs b/src/OpenCvSharp/Modules/videoio/VideoCapture.cs index 4b256c428..a53a84fd5 100644 --- a/src/OpenCvSharp/Modules/videoio/VideoCapture.cs +++ b/src/OpenCvSharp/Modules/videoio/VideoCapture.cs @@ -64,11 +64,8 @@ public VideoCapture(int index, VideoCaptureAPIs apiPreference = VideoCaptureAPIs /// The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`. /// See cv::VideoCaptureProperties /// - public VideoCapture(int index, VideoCaptureAPIs apiPreference, int[]? prms = null) + public VideoCapture(int index, VideoCaptureAPIs apiPreference, int[] prms) { - if (prms == null) - prms = Array.Empty(); - NativeMethods.HandleException( NativeMethods.videoio_VideoCapture_new5(index, (int)apiPreference, prms, prms.Length, out ptr)); @@ -153,12 +150,10 @@ public VideoCapture(string fileName, VideoCaptureAPIs apiPreference = VideoCaptu /// The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`. /// See cv::VideoCaptureProperties /// - public VideoCapture(string fileName, VideoCaptureAPIs apiPreference, int[]? prms = null) + public VideoCapture(string fileName, VideoCaptureAPIs apiPreference, int[] prms) { if (string.IsNullOrEmpty(fileName)) throw new ArgumentNullException(nameof(fileName)); - if (prms == null) - prms = Array.Empty(); NativeMethods.HandleException( NativeMethods.videoio_VideoCapture_new4(fileName, (int)apiPreference, prms, prms.Length, out ptr)); diff --git a/src/OpenCvSharp/Modules/videoio/VideoWriter.cs b/src/OpenCvSharp/Modules/videoio/VideoWriter.cs index e0b892727..29aa20db7 100644 --- a/src/OpenCvSharp/Modules/videoio/VideoWriter.cs +++ b/src/OpenCvSharp/Modules/videoio/VideoWriter.cs @@ -82,13 +82,11 @@ public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourc /// The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) /// see cv::VideoWriterProperties /// - public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, int[]? prms = null) + public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, int[] prms) { FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); Fps = fps; FrameSize = frameSize; - if (prms == null) - prms = Array.Empty(); NativeMethods.HandleException( NativeMethods.videoio_VideoWriter_new4(fileName, (int)fourcc, fps, frameSize, prms, prms.Length, out ptr)); if (ptr == IntPtr.Zero) @@ -130,13 +128,11 @@ public VideoWriter(string fileName, FourCC fourcc, double fps, Size frameSize, V /// The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) /// see cv::VideoWriterProperties /// - public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, int[]? prms = null) + public VideoWriter(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, int[] prms) { FileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); Fps = fps; FrameSize = frameSize; - if (prms == null) - prms = Array.Empty(); NativeMethods.HandleException( NativeMethods.videoio_VideoWriter_new5(fileName, (int)apiPreference, (int)fourcc, fps, frameSize, prms, prms.Length, out ptr)); if (ptr == IntPtr.Zero) From aeebc1730b75d177ea113521eebd00ff5b5f8873 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 11 Jul 2021 20:57:29 +0900 Subject: [PATCH 040/340] 4.5.3 --- README.md | 2 +- download_opencv_windows.ps1 | 4 +-- nuget/OpenCvSharp4.runtime.uwp.nuspec | 12 ++++---- nuget/OpenCvSharp4.runtime.win.nuspec | 4 +-- nuget/OpenCvSharp4.runtime.win.props | 8 ++--- .../OpenCvSharpExtern.vcxproj | 28 ++++++++--------- .../uwpOpenCvSharpExtern.vcxproj | 30 +++++++++---------- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index cc5321ee2..d68d7dca3 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ This issue may be helpful: https://github.com/shimat/opencvsharp/issues/920 If you do not use NuGet, get DLL files from the [release page](https://github.com/shimat/opencvsharp/releases). ## Target OpenCV -* [OpenCV 4.5.2](http://opencv.org/) with [opencv_contrib](https://github.com/opencv/opencv_contrib) +* [OpenCV 4.5.3](http://opencv.org/) with [opencv_contrib](https://github.com/opencv/opencv_contrib) ## Requirements * [.NET Framework 4.6.1](http://www.microsoft.com/ja-jp/download/details.aspx?id=1639) / [.NET Core 2.0](https://www.microsoft.com/net/download) / [Mono](http://www.mono-project.com/Main_Page) diff --git a/download_opencv_windows.ps1 b/download_opencv_windows.ps1 index 7bbf0c711..fa9f9e9e1 100644 --- a/download_opencv_windows.ps1 +++ b/download_opencv_windows.ps1 @@ -1,5 +1,5 @@ -$tag = "4.5.2.20210404" -$version = "452" +$tag = "4.5.3.20210711" +$version = "453" $uriArray =@( "https://github.com/shimat/opencv_files/releases/download/${tag}/opencv${version}_win_x64.zip" "https://github.com/shimat/opencv_files/releases/download/${tag}/opencv${version}_win_x86.zip" diff --git a/nuget/OpenCvSharp4.runtime.uwp.nuspec b/nuget/OpenCvSharp4.runtime.uwp.nuspec index ecafaa1e3..ffcee4eb9 100644 --- a/nuget/OpenCvSharp4.runtime.uwp.nuspec +++ b/nuget/OpenCvSharp4.runtime.uwp.nuspec @@ -27,11 +27,11 @@ - - - - - - + + + + + + diff --git a/nuget/OpenCvSharp4.runtime.win.nuspec b/nuget/OpenCvSharp4.runtime.win.nuspec index f1383e242..76e3828d8 100644 --- a/nuget/OpenCvSharp4.runtime.win.nuspec +++ b/nuget/OpenCvSharp4.runtime.win.nuspec @@ -27,8 +27,8 @@ - - + + diff --git a/nuget/OpenCvSharp4.runtime.win.props b/nuget/OpenCvSharp4.runtime.win.props index de22c894a..262affdf2 100644 --- a/nuget/OpenCvSharp4.runtime.win.props +++ b/nuget/OpenCvSharp4.runtime.win.props @@ -7,8 +7,8 @@ dll\x86\OpenCvSharpExtern.dll PreserveNewest - - dll\x86\opencv_videoio_ffmpeg452.dll + + dll\x86\opencv_videoio_ffmpeg453.dll PreserveNewest @@ -17,8 +17,8 @@ dll\x64\OpenCvSharpExtern.dll PreserveNewest - - dll\x64\opencv_videoio_ffmpeg452_64.dll + + dll\x64\opencv_videoio_ffmpeg453_64.dll PreserveNewest diff --git a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj index f430fe433..130ca65ce 100644 --- a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj +++ b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj @@ -79,14 +79,14 @@ $(SolutionDir)src\$(Configuration)\$(PlatformName)\ src\$(Platform)\$(Configuration)\ false - $(SolutionDir)\opencv_files\opencv452_win_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_win_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_win_x64\x64\vc16\staticlib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv452_win_x64\x64\vc16\staticlib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x64-windows-static\lib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv452_win_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_win_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_win_x86\x86\vc16\staticlib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x86-windows-static\lib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv452_win_x86\x86\vc16\staticlib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_win_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_win_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_win_x64\x64\vc16\staticlib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_win_x64\x64\vc16\staticlib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x64-windows-static\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_win_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_win_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_win_x86\x86\vc16\staticlib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x86-windows-static\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_win_x86\x86\vc16\staticlib;$(LibraryPath) @@ -164,7 +164,7 @@ true - IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco452.lib;opencv_bgsegm452.lib;opencv_bioinspired452.lib;opencv_calib3d452.lib;opencv_ccalib452.lib;opencv_core452.lib;opencv_dnn452.lib;opencv_dnn_superres452.lib;opencv_dnn_objdetect452.lib;opencv_dpm452.lib;opencv_face452.lib;opencv_features2d452.lib;opencv_flann452.lib;opencv_fuzzy452.lib;opencv_hfs452.lib;opencv_highgui452.lib;opencv_imgcodecs452.lib;opencv_imgproc452.lib;opencv_img_hash452.lib;opencv_line_descriptor452.lib;opencv_ml452.lib;opencv_objdetect452.lib;opencv_optflow452.lib;opencv_phase_unwrapping452.lib;opencv_photo452.lib;opencv_plot452.lib;opencv_quality452.lib;opencv_reg452.lib;opencv_rgbd452.lib;opencv_saliency452.lib;opencv_shape452.lib;opencv_stereo452.lib;opencv_stitching452.lib;opencv_structured_light452.lib;opencv_superres452.lib;opencv_surface_matching452.lib;opencv_text452.lib;opencv_tracking452.lib;opencv_video452.lib;opencv_videoio452.lib;opencv_videostab452.lib;opencv_xfeatures2d452.lib;opencv_ximgproc452.lib;opencv_xobjdetect452.lib;opencv_xphoto452.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) + IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco453.lib;opencv_bgsegm453.lib;opencv_bioinspired453.lib;opencv_calib3d453.lib;opencv_ccalib453.lib;opencv_core453.lib;opencv_dnn453.lib;opencv_dnn_superres453.lib;opencv_dnn_objdetect453.lib;opencv_dpm453.lib;opencv_face453.lib;opencv_features2d453.lib;opencv_flann453.lib;opencv_fuzzy453.lib;opencv_hfs453.lib;opencv_highgui453.lib;opencv_imgcodecs453.lib;opencv_imgproc453.lib;opencv_img_hash453.lib;opencv_line_descriptor453.lib;opencv_ml453.lib;opencv_objdetect453.lib;opencv_optflow453.lib;opencv_phase_unwrapping453.lib;opencv_photo453.lib;opencv_plot453.lib;opencv_quality453.lib;opencv_reg453.lib;opencv_rgbd453.lib;opencv_saliency453.lib;opencv_shape453.lib;opencv_stereo453.lib;opencv_stitching453.lib;opencv_structured_light453.lib;opencv_superres453.lib;opencv_surface_matching453.lib;opencv_text453.lib;opencv_tracking453.lib;opencv_video453.lib;opencv_videoio453.lib;opencv_videostab453.lib;opencv_xfeatures2d453.lib;opencv_ximgproc453.lib;opencv_xobjdetect453.lib;opencv_xphoto453.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) %(IgnoreSpecificDefaultLibraries) true NotSet @@ -179,8 +179,8 @@ copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\$(TargetFileName)" copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\$(TargetFileName)" -copy "$(SolutionDir)opencv_files\opencv452_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg452.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\opencv_videoio_ffmpeg452.dll" -copy "$(SolutionDir)opencv_files\opencv452_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg452.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg452.dll" +copy "$(SolutionDir)opencv_files\opencv453_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg453.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\opencv_videoio_ffmpeg453.dll" +copy "$(SolutionDir)opencv_files\opencv453_win_x86\x86\vc16\bin\opencv_videoio_ffmpeg453.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg453.dll" @@ -207,7 +207,7 @@ copy "$(SolutionDir)opencv_files\opencv452_win_x86\x86\vc16\bin\opencv_videoio_f true - IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco452.lib;opencv_bgsegm452.lib;opencv_bioinspired452.lib;opencv_calib3d452.lib;opencv_ccalib452.lib;opencv_core452.lib;opencv_dnn452.lib;opencv_dnn_superres452.lib;opencv_dnn_objdetect452.lib;opencv_dpm452.lib;opencv_face452.lib;opencv_features2d452.lib;opencv_flann452.lib;opencv_fuzzy452.lib;opencv_hfs452.lib;opencv_highgui452.lib;opencv_imgcodecs452.lib;opencv_imgproc452.lib;opencv_img_hash452.lib;opencv_line_descriptor452.lib;opencv_ml452.lib;opencv_objdetect452.lib;opencv_optflow452.lib;opencv_phase_unwrapping452.lib;opencv_photo452.lib;opencv_plot452.lib;opencv_quality452.lib;opencv_reg452.lib;opencv_rgbd452.lib;opencv_saliency452.lib;opencv_shape452.lib;opencv_stereo452.lib;opencv_stitching452.lib;opencv_structured_light452.lib;opencv_superres452.lib;opencv_surface_matching452.lib;opencv_text452.lib;opencv_tracking452.lib;opencv_video452.lib;opencv_videoio452.lib;opencv_videostab452.lib;opencv_xfeatures2d452.lib;opencv_ximgproc452.lib;opencv_xobjdetect452.lib;opencv_xphoto452.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) + IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libopenjp2.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco453.lib;opencv_bgsegm453.lib;opencv_bioinspired453.lib;opencv_calib3d453.lib;opencv_ccalib453.lib;opencv_core453.lib;opencv_dnn453.lib;opencv_dnn_superres453.lib;opencv_dnn_objdetect453.lib;opencv_dpm453.lib;opencv_face453.lib;opencv_features2d453.lib;opencv_flann453.lib;opencv_fuzzy453.lib;opencv_hfs453.lib;opencv_highgui453.lib;opencv_imgcodecs453.lib;opencv_imgproc453.lib;opencv_img_hash453.lib;opencv_line_descriptor453.lib;opencv_ml453.lib;opencv_objdetect453.lib;opencv_optflow453.lib;opencv_phase_unwrapping453.lib;opencv_photo453.lib;opencv_plot453.lib;opencv_quality453.lib;opencv_reg453.lib;opencv_rgbd453.lib;opencv_saliency453.lib;opencv_shape453.lib;opencv_stereo453.lib;opencv_stitching453.lib;opencv_structured_light453.lib;opencv_superres453.lib;opencv_surface_matching453.lib;opencv_text453.lib;opencv_tracking453.lib;opencv_video453.lib;opencv_videoio453.lib;opencv_videostab453.lib;opencv_xfeatures2d453.lib;opencv_ximgproc453.lib;opencv_xobjdetect453.lib;opencv_xphoto453.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.80.0.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;tiffxx.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) %(IgnoreSpecificDefaultLibraries) true NotSet @@ -222,8 +222,8 @@ copy "$(SolutionDir)opencv_files\opencv452_win_x86\x86\vc16\bin\opencv_videoio_f copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\$(TargetFileName)" copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\$(TargetFileName)" -copy "$(SolutionDir)opencv_files\opencv452_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg452_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg452_64.dll" -copy "$(SolutionDir)opencv_files\opencv452_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg452_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\opencv_videoio_ffmpeg452_64.dll" +copy "$(SolutionDir)opencv_files\opencv453_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg453_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg453_64.dll" +copy "$(SolutionDir)opencv_files\opencv453_win_x64\x64\vc16\bin\opencv_videoio_ffmpeg453_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\opencv_videoio_ffmpeg453_64.dll" diff --git a/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj b/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj index 2c4f922af..369e50f07 100644 --- a/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj +++ b/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj @@ -103,42 +103,42 @@ $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ $(Platform)\$(Configuration)\ OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv452_uwp_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_uwp_x86\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_uwp_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_uwp_x86\x86\vc16\lib;$(LibraryPath) false $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ $(Platform)\$(Configuration)\ OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv452_uwp_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_uwp_x86\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_uwp_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_uwp_x86\x86\vc16\lib;$(LibraryPath) false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv452_uwp_ARM\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_uwp_ARM\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_uwp_ARM\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_uwp_ARM\x86\vc16\lib;$(LibraryPath) false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv452_uwp_ARM\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_uwp_ARM\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_uwp_ARM\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_uwp_ARM\x86\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv452_uwp_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_uwp_x64\x64\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_uwp_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_uwp_x64\x64\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv452_uwp_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv452_uwp_x64\x64\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv453_uwp_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv453_uwp_x64\x64\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ @@ -174,7 +174,7 @@ Console false D:\Samples\vcpkg\packages\opencv4_x86-uwp\lib; - opencv_world452.lib;opencv_img_hash452.lib;WindowsApp.lib;%(AdditionalDependencies) + opencv_world453.lib;opencv_img_hash453.lib;WindowsApp.lib;%(AdditionalDependencies) @@ -207,7 +207,7 @@ Console false - opencv_world452.lib;opencv_img_hash452.lib;%(AdditionalDependencies) + opencv_world453.lib;opencv_img_hash453.lib;%(AdditionalDependencies) @@ -240,7 +240,7 @@ Console false - opencv_world452.lib;opencv_img_hash452.lib;WindowsApp.lib;%(AdditionalDependencies) + opencv_world453.lib;opencv_img_hash453.lib;WindowsApp.lib;%(AdditionalDependencies) From 8796eca84a1de0172f45a57feebbed58d4f2cb59 Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 11 Jul 2021 23:30:56 +0900 Subject: [PATCH 041/340] docker --- .../Dockerfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docker/{al2-dotnet5-opencv4.5.1 => al2-dotnet5-opencv4.5.3}/Dockerfile (100%) diff --git a/docker/al2-dotnet5-opencv4.5.1/Dockerfile b/docker/al2-dotnet5-opencv4.5.3/Dockerfile similarity index 100% rename from docker/al2-dotnet5-opencv4.5.1/Dockerfile rename to docker/al2-dotnet5-opencv4.5.3/Dockerfile From e73e59a142fe44f0445a231b97add832a095360f Mon Sep 17 00:00:00 2001 From: shimat Date: Sun, 11 Jul 2021 23:36:23 +0900 Subject: [PATCH 042/340] Update docker-amazonlinux.yml --- .github/workflows/docker-amazonlinux.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-amazonlinux.yml b/.github/workflows/docker-amazonlinux.yml index 53d5e429a..ed4a71d5e 100644 --- a/.github/workflows/docker-amazonlinux.yml +++ b/.github/workflows/docker-amazonlinux.yml @@ -19,5 +19,5 @@ jobs: - name: docker build run: | - cd docker/al2-dotnet5-opencv4.5.1 - docker build -t shimat/al2-dotnet5-opencv4.5.1 . + cd docker/al2-dotnet5-opencv4.5.3 + docker build -t shimat/al2-dotnet5-opencv4.5.3 . From e38a19a2c076129504aa81e15f63dc2e51f7bcfa Mon Sep 17 00:00:00 2001 From: shimat Date: Mon, 12 Jul 2021 00:08:23 +0900 Subject: [PATCH 043/340] Update windows.yml --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 782411d62..2eab39892 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -8,7 +8,7 @@ on: - master env: - OPENCV_VERSION: 4.5.2 + OPENCV_VERSION: 4.5.3 jobs: build: From 7c61bb079c1ac177ea773da84ce7d20c6709c116 Mon Sep 17 00:00:00 2001 From: shimat Date: Mon, 12 Jul 2021 00:09:29 +0900 Subject: [PATCH 044/340] Update Dockerfile --- docker/al2-dotnet5-opencv4.5.3/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/al2-dotnet5-opencv4.5.3/Dockerfile b/docker/al2-dotnet5-opencv4.5.3/Dockerfile index 2f0e1ed59..bcaf67d15 100644 --- a/docker/al2-dotnet5-opencv4.5.3/Dockerfile +++ b/docker/al2-dotnet5-opencv4.5.3/Dockerfile @@ -1,6 +1,6 @@ FROM public.ecr.aws/lambda/dotnet:5.0 -ENV OPENCV_VERSION=4.5.1 +ENV OPENCV_VERSION=4.5.3 WORKDIR / From 8774c9e283745d1643bb0086ee6684eb3b7f00e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=85=E6=B0=B8?= Date: Tue, 13 Jul 2021 14:20:32 +0800 Subject: [PATCH 045/340] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=20?= =?UTF-8?q?WinForm=20=E9=A1=B9=E7=9B=AE=E7=94=A8=E4=BA=8E=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E7=9A=84=E8=AF=95=E9=AA=8C=20DebugVisualizer=20?= =?UTF-8?q?=E7=9A=84=E7=AA=97=E4=BD=93=E7=95=8C=E9=9D=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App.config | 6 ++ ...nCvSharp.DebuggerVisualizers.Tester.csproj | 80 +++++++++++++++++++ .../Program.cs | 22 +++++ .../Properties/AssemblyInfo.cs | 36 +++++++++ 4 files changed, 144 insertions(+) create mode 100644 test/OpenCvSharp.DebuggerVisualizers.Tester/App.config create mode 100644 test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj create mode 100644 test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs create mode 100644 test/OpenCvSharp.DebuggerVisualizers.Tester/Properties/AssemblyInfo.cs diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/App.config b/test/OpenCvSharp.DebuggerVisualizers.Tester/App.config new file mode 100644 index 000000000..731f6de6c --- /dev/null +++ b/test/OpenCvSharp.DebuggerVisualizers.Tester/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj b/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj new file mode 100644 index 000000000..ed4abd463 --- /dev/null +++ b/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj @@ -0,0 +1,80 @@ + + + + + Debug + AnyCPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC} + WinExe + OpenCvSharp.DebuggerVisualizers.Tester + OpenCvSharp.DebuggerVisualizers.Tester + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs b/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs new file mode 100644 index 000000000..d9c688c10 --- /dev/null +++ b/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace OpenCvSharp.DebuggerVisualizers.Tester +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/Properties/AssemblyInfo.cs b/test/OpenCvSharp.DebuggerVisualizers.Tester/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..cc2b249e2 --- /dev/null +++ b/test/OpenCvSharp.DebuggerVisualizers.Tester/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("OpenCvSharp.DebuggerVisualizers.Tester")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("OpenCvSharp.DebuggerVisualizers.Tester")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("ffd602aa-0a08-40dd-8acd-7f5a3ba51dec")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] From 85df07110ad3c65459851108034aaf9fbe1c0f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=85=E6=B0=B8?= Date: Tue, 13 Jul 2021 14:54:33 +0800 Subject: [PATCH 046/340] =?UTF-8?q?=E5=B0=86=E7=95=8C=E9=9D=A2=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E9=A1=B9=E7=9B=AE=E5=8A=A0=E5=85=A5=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E4=B8=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenCvSharp.sln | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/OpenCvSharp.sln b/OpenCvSharp.sln index 7a4498284..b04ebc080 100644 --- a/OpenCvSharp.sln +++ b/OpenCvSharp.sln @@ -35,6 +35,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .editorconfig = .editorconfig EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenCvSharp.DebuggerVisualizers.Tester", "test\OpenCvSharp.DebuggerVisualizers.Tester\OpenCvSharp.DebuggerVisualizers.Tester.csproj", "{FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -185,6 +187,22 @@ Global {1C399497-5240-439A-879A-4ACB34C409AE}.Release|x64.Build.0 = Release|Any CPU {1C399497-5240-439A-879A-4ACB34C409AE}.Release|x86.ActiveCfg = Release|Any CPU {1C399497-5240-439A-879A-4ACB34C409AE}.Release|x86.Build.0 = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|ARM.ActiveCfg = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|ARM.Build.0 = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|x64.ActiveCfg = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|x64.Build.0 = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|x86.ActiveCfg = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Debug|x86.Build.0 = Debug|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|Any CPU.Build.0 = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|ARM.ActiveCfg = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|ARM.Build.0 = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|x64.ActiveCfg = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|x64.Build.0 = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|x86.ActiveCfg = Release|Any CPU + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -199,6 +217,7 @@ Global {BD5471E5-7B55-5192-8DA4-042B66AF71AE} = {E048D213-B3B9-453F-9A41-29FDEB0D496B} {01FD66CE-F81A-4641-BE30-3CF9DE84D6D5} = {E048D213-B3B9-453F-9A41-29FDEB0D496B} {1C399497-5240-439A-879A-4ACB34C409AE} = {A6E578C0-A34A-4CCF-A808-CBAC81CB48C0} + {FFD602AA-0A08-40DD-8ACD-7F5A3BA51DEC} = {1F113DD0-E292-47A5-8EFF-3FB5D0869BF3} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {60DD551B-ED40-447E-AABE-B408178D29D1} From ea15875410df65a078ec898a7c36b7b4fab3bfa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=85=E6=B0=B8?= Date: Tue, 13 Jul 2021 14:56:21 +0800 Subject: [PATCH 047/340] =?UTF-8?q?=E6=88=90=E5=8A=9F=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=AF=95=E9=AA=8C=E9=A1=B9=E7=9B=AE=E6=98=BE=E7=A4=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 图片文件使用库中现有图片(代码库可以减少体积)。 --- .../ImageViewer.cs | 10 +++++ ...nCvSharp.DebuggerVisualizers.Tester.csproj | 35 ++++++------------ .../Program.cs | 5 ++- .../_data/image/calibration/00.jpg | Bin 0 -> 276370 bytes 4 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 test/OpenCvSharp.DebuggerVisualizers.Tester/_data/image/calibration/00.jpg diff --git a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs index 8dc8087a2..67848cf8a 100644 --- a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs +++ b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs @@ -29,6 +29,16 @@ public ImageViewer(MatProxy proxy) bitmap = proxy.CreateBitmap(); } + /// + /// 仅仅用于开发目的。 + /// + /// + public ImageViewer(string imgFile) + : this() + { + bitmap = new Bitmap(imgFile); + } + /// /// /// diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj b/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj index ed4abd463..89bfc1acc 100644 --- a/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj +++ b/test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj @@ -46,35 +46,22 @@ - - Form - - - Form1.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - + + + {4232cb4a-dfe3-46ca-9503-c5f1798baed3} + OpenCvSharp.DebuggerVisualizers + + + + + PreserveNewest + + \ No newline at end of file diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs b/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs index d9c688c10..74916e407 100644 --- a/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs +++ b/test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs @@ -16,7 +16,10 @@ static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new Form1()); + + var img = @"_data\image\calibration\00.jpg"; + var mainForm = new ImageViewer(img); + Application.Run(mainForm); } } } diff --git a/test/OpenCvSharp.DebuggerVisualizers.Tester/_data/image/calibration/00.jpg b/test/OpenCvSharp.DebuggerVisualizers.Tester/_data/image/calibration/00.jpg new file mode 100644 index 0000000000000000000000000000000000000000..995d0a8d1ece4ee5786d7a3b688b54dae7470937 GIT binary patch literal 276370 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 z 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 Date: Tue, 13 Jul 2021 17:13:26 +0800 Subject: [PATCH 048/340] =?UTF-8?q?=E4=B8=BA=20Mat=20=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E5=83=8F=E6=9F=A5=E7=9C=8B=E5=99=A8=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=BC=A9=E6=94=BE=E5=88=B0=E5=B0=8F=E4=BA=8E=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E7=9A=84=E6=9C=80=E5=A4=A7=E6=95=B4=E6=95=B0=E5=80=8D?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 如果图像框不能随窗口放大,那么将阻碍用户放大查看非常小的图形。 --- .../ImageViewer.cs | 45 ++++--- .../ImageViewer.designer.cs | 55 ++++---- .../ImageViewer.resx | 120 ++++++++++++++++++ .../OpenCvSharp.DebuggerVisualizers.csproj | 5 + 4 files changed, 180 insertions(+), 45 deletions(-) create mode 100644 src/OpenCvSharp.DebuggerVisualizers/ImageViewer.resx diff --git a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs index 67848cf8a..0086036ac 100644 --- a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs +++ b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs @@ -47,7 +47,9 @@ protected override void OnLoad(EventArgs e) { base.OnLoad(e); - SetClientSize(new System.Drawing.Size(bitmap.Width, bitmap.Height)); + var ratio = SetClientSize(new System.Drawing.Size(bitmap.Width, bitmap.Height)); + DisplayRatio(ratio); + pictureBox.Image = bitmap; } @@ -55,22 +57,33 @@ protected override void OnLoad(EventArgs e) /// ClientSizeを画面からはみ出ない大きさに調整して設定する. ///
/// - private void SetClientSize(System.Drawing.Size size) + private double SetClientSize(System.Drawing.Size size) { var screenSize = Screen.PrimaryScreen.Bounds.Size; - if (size.Width > screenSize.Width) - { - double ratio = (double) screenSize.Width/size.Width; - size.Width = Convert.ToInt32(size.Width*ratio); - size.Height = Convert.ToInt32(size.Height*ratio); - } - if (size.Height > screenSize.Height) - { - double ratio = (double) screenSize.Height/size.Height; - size.Width = Convert.ToInt32(size.Width*ratio); - size.Height = Convert.ToInt32(size.Height*ratio); - } - ClientSize = size; + var x_ratio = (double)screenSize.Width / size.Width; + var y_ratio = (double)screenSize.Height / size.Height; + var ratio = Math.Max(x_ratio, y_ratio); + ratio = AutoZoom(ratio); + size.Width = Convert.ToInt32(size.Width * ratio); + size.Height = Convert.ToInt32(size.Height * ratio); + ClientSize = size; + pictureBox.Size = size; + return ratio; } - } + + private double AutoZoom(double srcZoom) + { + var v1 = srcZoom; + var lg2 = Math.Log(v1,2); + var lgz = Math.Floor(lg2); + var pw = lgz == lg2 ? lgz - 1 : lgz; + var r = Math.Pow(2, pw); + return r; + } + + private void DisplayRatio(double ratio) + { + this.Text = $"ImageViewer Zoom: {ratio:P1}"; + } + } } diff --git a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.designer.cs b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.designer.cs index 2074dd920..02eb5299d 100644 --- a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.designer.cs +++ b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.designer.cs @@ -28,35 +28,32 @@ protected override void Dispose(bool disposing) ///
private void InitializeComponent() { - this.pictureBox = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); - this.SuspendLayout(); - // - // pictureBox - // - this.pictureBox.BackColor = System.Drawing.Color.Black; - this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBox.Location = new System.Drawing.Point(0, 0); - this.pictureBox.Name = "pictureBox"; - this.pictureBox.Size = new System.Drawing.Size(384, 263); - this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.pictureBox.TabIndex = 0; - this.pictureBox.TabStop = false; - // - // ImageViewer - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(384, 263); - this.Controls.Add(this.pictureBox); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ImageViewer"; - this.Text = "ImageViewer"; - ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + this.pictureBox = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox + // + this.pictureBox.BackColor = System.Drawing.Color.Black; + this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox.Location = new System.Drawing.Point(0, 0); + this.pictureBox.Name = "pictureBox"; + this.pictureBox.Size = new System.Drawing.Size(384, 263); + this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox.TabIndex = 0; + this.pictureBox.TabStop = false; + // + // ImageViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.ClientSize = new System.Drawing.Size(384, 263); + this.Controls.Add(this.pictureBox); + this.Name = "ImageViewer"; + this.Text = "ImageViewer"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + this.ResumeLayout(false); } diff --git a/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.resx b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/OpenCvSharp.DebuggerVisualizers/ImageViewer.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/OpenCvSharp.DebuggerVisualizers/OpenCvSharp.DebuggerVisualizers.csproj b/src/OpenCvSharp.DebuggerVisualizers/OpenCvSharp.DebuggerVisualizers.csproj index 1385eea97..f27eb236d 100644 --- a/src/OpenCvSharp.DebuggerVisualizers/OpenCvSharp.DebuggerVisualizers.csproj +++ b/src/OpenCvSharp.DebuggerVisualizers/OpenCvSharp.DebuggerVisualizers.csproj @@ -73,6 +73,11 @@
+ + + ImageViewer.cs + + + + diff --git a/nuget/OpenCvSharp4.runtime.Wasm.nuspec b/nuget/OpenCvSharp4.runtime.Wasm.nuspec new file mode 100644 index 000000000..e13194419 --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.Wasm.nuspec @@ -0,0 +1,28 @@ + + + + OpenCvSharp4.runtime.Wasm + 4.3.0.20191030 + OpenCvSharp native bindings for Wasm + shimat,vladkol + Apache-2.0 + + https://github.com/shimat/opencvsharp + https://raw.githubusercontent.com/shimat/opencvsharp/master/nuget/icon/opencvsharp.png + false + Internal implementation package for OpenCvSharp to work on Wasm + Internal implementation package for OpenCvSharp to work on Wasm + + Copyright 2008-2020 + Image Processing OpenCV Wrapper FFI opencvsharp + + + + + + + + + + + \ No newline at end of file diff --git a/nuget/OpenCvSharp4.runtime.Wasm.props b/nuget/OpenCvSharp4.runtime.Wasm.props new file mode 100644 index 000000000..71c05c474 --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.Wasm.props @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 06bf10978904c69bd947b02a0c4ccf21233e51ff Mon Sep 17 00:00:00 2001 From: yamachu Date: Thu, 2 Dec 2021 13:02:26 +0900 Subject: [PATCH 087/340] Add workflow --- .github/workflows/wasm.yml | 177 +++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 .github/workflows/wasm.yml diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml new file mode 100644 index 000000000..9e96aa823 --- /dev/null +++ b/.github/workflows/wasm.yml @@ -0,0 +1,177 @@ +name: Wasm + +on: + pull_request: + types: [synchronize, opened] + push: + branches: + - master + +env: + DEBIAN_FRONTEND: noninteractive + OPENCV_VERSION: 4.5.3 + EM_VERSION: 2.0.23 + EM_CACHE_FOLDER: 'emsdk-cache' + +jobs: + build: + + runs-on: ubuntu-18.04 + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Install dependencies + run: | + pwd + echo ${GITHUB_WORKSPACE} + current_path=$(pwd) + sudo apt-get update -y + sudo apt-get install -y --no-install-recommends \ + apt-transport-https \ + software-properties-common \ + wget \ + unzip \ + ca-certificates \ + build-essential \ + cmake \ + git \ + libtbb-dev \ + libatlas-base-dev \ + libgtk2.0-dev \ + libavcodec-dev \ + libavformat-dev \ + libswscale-dev \ + libdc1394-22-dev \ + libxine2-dev \ + libv4l-dev \ + libtheora-dev \ + libvorbis-dev \ + libxvidcore-dev \ + libopencore-amrnb-dev \ + libopencore-amrwb-dev \ + libavresample-dev \ + x264 \ + libtesseract-dev + + - name: Cache OpenCV + id: opencv-cache + uses: actions/cache@v2 + with: + path: ${{ github.workspace }}/opencv_wasm/ + key: opencv-${{ env.OPENCV_VERSION }}-wasm + + - name: Setup Emscripten cache + id: cache-system-libraries + uses: actions/cache@v2 + with: + path: ${{env.EM_CACHE_FOLDER}} + key: ${{env.EM_VERSION}}-${{ runner.os }} + - uses: mymindstorm/setup-emsdk@v10 + with: + version: ${{env.EM_VERSION}} + actions-cache-folder: ${{env.EM_CACHE_FOLDER}} + + - name: Build OpenCV + if: steps.opencv-cache.outputs.cache-hit != 'true' + run: | + wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip -Oopencv-${OPENCV_VERSION}.zip && unzip opencv-${OPENCV_VERSION}.zip + wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip -Oopencv_contrib-${OPENCV_VERSION}.zip && unzip opencv_contrib-${OPENCV_VERSION}.zip + cd opencv-${OPENCV_VERSION} && mkdir build && cd build + emcmake cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-${OPENCV_VERSION}/modules \ + -DBUILD_SHARED_LIBS=OFF \ + -DENABLE_CXX11=ON -DBUILD_TESTS=OFF \ + -DBUILD_PERF_TESTS=OFF \ + -DBUILD_DOCS=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_JAVA=OFF \ + -DBUILD_opencv_java_bindings_generator=OFF \ + -DBUILD_opencv_python_bindings_generator=OFF \ + -DBUILD_opencv_python_tests=OFF \ + -DBUILD_opencv_ts=OFF \ + -DBUILD_opencv_js=OFF \ + -DBUILD_opencv_js_bindings_generator=OFF \ + -DBUILD_opencv_app=OFF \ + -DBUILD_opencv_barcode=OFF \ + -DBUILD_opencv_bioinspired=OFF \ + -DBUILD_opencv_ccalib=OFF \ + -DBUILD_opencv_datasets=OFF \ + -DBUILD_opencv_dnn_objdetect=OFF \ + -DBUILD_opencv_dpm=OFF \ + -DBUILD_opencv_fuzzy=OFF \ + -DBUILD_opencv_gapi=ON \ + -DBUILD_opencv_intensity_transform=OFF \ + -DBUILD_opencv_mcc=OFF \ + -DBUILD_opencv_objc_bindings_generator=OFF \ + -DBUILD_opencv_rapid=OFF \ + -DBUILD_opencv_reg=OFF \ + -DBUILD_opencv_stereo=OFF \ + -DBUILD_opencv_structured_light=OFF \ + -DBUILD_opencv_surface_matching=OFF \ + -DBUILD_opencv_wechat_qrcode=OFF \ + -DBUILD_opencv_videostab=OFF \ + -DWITH_GSTREAMER=OFF \ + -DWITH_EIGEN=OFF \ + -DWITH_ADE=OFF \ + -DOPENCV_ENABLE_NONFREE=ON \ + -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_wasm \ + -DCMAKE_C_FLAGS='-s WASM=1' -DCMAKE_CXX_FLAGS='-s WASM=1' \ + -DWITH_ITT=OFF \ + -DWITH_JPEG=OFF \ + -DWITH_TIFF=OFF \ + -DWITH_PNG=OFF \ + -DWITH_IPP=OFF \ + -DWITH_LAPACK=OFF \ + -DCV_ENABLE_INTRINSICS=OFF \ + -DBUILD_opencv_dnn=ON \ + .. + make -j2 + make install + em++ -r -o ${GITHUB_WORKSPACE}/opencv_wasm/libopencv.o \ + -Wl,--whole-archive ${GITHUB_WORKSPACE}/opencv_wasm/lib/*.a \ + ${GITHUB_WORKSPACE}/opencv_wasm/lib/opencv4/3rdparty/*.a + cd ${GITHUB_WORKSPACE} + ls + + - name: Build OpenCvSharpExtern + run: | + ls ${GITHUB_WORKSPACE}/opencv_wasm + echo "-----" + mkdir src/build && cd $_ + emcmake cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=${GITHUB_WORKSPACE}/opencv_wasm/lib/cmake/opencv4 -DWASM_LIB=${GITHUB_WORKSPACE}/opencv_wasm/libopencv.o .. + make -j2 + ls OpenCvSharpExtern + cp OpenCvSharpExtern/libOpenCvSharpExtern.a ${GITHUB_WORKSPACE}/nuget/ + + - name: Check OpenCvSharpExtern + run: | + echo TODO + + - name: Install .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + + - name: Create NuGet package + env: + BETA: "" + run: | + yyyymmdd=`date '+%Y%m%d'` + echo $yyyymmdd + sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.${yyyymmdd}${BETA}<\/version>/" ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.Wasm.nuspec + cat ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.Wasm.nuspec + dotnet pack ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.Wasm.csproj -o ${GITHUB_WORKSPACE}/artifacts_wasm + ls ${GITHUB_WORKSPACE}/artifacts_wasm + + - uses: actions/upload-artifact@v1 + with: + name: artifacts_wasm + path: artifacts_wasm + + - name: Test + run: | + echo TODO From 322cd008fe220efe61786725b75ec88e4729005a Mon Sep 17 00:00:00 2001 From: yamachu Date: Thu, 2 Dec 2021 12:56:26 +0900 Subject: [PATCH 088/340] Omit net6.0 from TargetFrameworks Win 2019 uses VS 2019, so could not build net6.0 by using msbuild --- src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj | 1 + src/OpenCvSharp/OpenCvSharp.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj b/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj index 5f06bf8cc..b7d70abed 100644 --- a/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj +++ b/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj @@ -2,6 +2,7 @@ net461;netstandard2.0;netstandard2.1;netcoreapp2.1;net6.0; + net461;netstandard2.0;netstandard2.1;netcoreapp2.1; true true OpenCvSharp.Extensions diff --git a/src/OpenCvSharp/OpenCvSharp.csproj b/src/OpenCvSharp/OpenCvSharp.csproj index eb42b102e..77a927ecf 100644 --- a/src/OpenCvSharp/OpenCvSharp.csproj +++ b/src/OpenCvSharp/OpenCvSharp.csproj @@ -2,6 +2,7 @@ netstandard2.0;netstandard2.1;netcoreapp2.1;netcoreapp3.1;net461;net6.0; + netstandard2.0;netstandard2.1;netcoreapp2.1;netcoreapp3.1;net461 true true OpenCvSharp From 25b02dae768307c3d02d91f335391a4a4f2fec3c Mon Sep 17 00:00:00 2001 From: yamachu Date: Thu, 2 Dec 2021 12:58:28 +0900 Subject: [PATCH 089/340] pack net6.0 --- .github/workflows/windows.yml | 13 ++++++++++++- nuget/OpenCvSharp4.nuspec | 12 ++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8702e192c..562bd7b83 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -67,7 +67,7 @@ jobs: . ".\download_tesseract_windows.ps1" - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.0.2 + uses: microsoft/setup-msbuild@v1.1 - name: Build x64 shell: cmd @@ -81,6 +81,17 @@ jobs: shell: cmd run: msbuild OpenCvSharp.sln /t:build /p:configuration=Release /p:platform=ARM -maxcpucount + - name: Install .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: | + 5.0.x + 6.0.x + + - name: Build net6.0 + shell: cmd + run: dotnet build src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj -f net6.0 -p:configuration=Release -maxcpucount + - name: Pack NuGet packages shell: powershell run: | diff --git a/nuget/OpenCvSharp4.nuspec b/nuget/OpenCvSharp4.nuspec index 33613dccc..e8bf64415 100644 --- a/nuget/OpenCvSharp4.nuspec +++ b/nuget/OpenCvSharp4.nuspec @@ -37,6 +37,11 @@ + + + + + @@ -73,5 +78,12 @@ + + + + + + + From 7203986869d45b0c66bd83a7be895b4ac18cae27 Mon Sep 17 00:00:00 2001 From: yamachu Date: Thu, 2 Dec 2021 12:59:46 +0900 Subject: [PATCH 090/340] Use NETCOREAPP3_1`_OR_GREATER` --- src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs | 2 +- src/OpenCvSharp.WpfExtensions/WriteableBitmapConverter.cs | 2 +- .../Internal/PInvoke/NativeMethods/NativeMethods.cs | 2 +- src/OpenCvSharp/Modules/core/Mat/Mat.cs | 8 ++++---- src/OpenCvSharp/Modules/core/Mat/UMat.cs | 8 ++++---- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs b/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs index 7658d4dcb..a13498df4 100644 --- a/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs +++ b/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs @@ -1,4 +1,4 @@ -#if WINDOWS && (NET461 || NETCOREAPP3_1) +#if WINDOWS && (NET461 || NETCOREAPP3_1_OR_GREATER) using System; using System.Drawing; using System.Drawing.Imaging; diff --git a/src/OpenCvSharp.WpfExtensions/WriteableBitmapConverter.cs b/src/OpenCvSharp.WpfExtensions/WriteableBitmapConverter.cs index 4b0bcf76e..8b27e557c 100644 --- a/src/OpenCvSharp.WpfExtensions/WriteableBitmapConverter.cs +++ b/src/OpenCvSharp.WpfExtensions/WriteableBitmapConverter.cs @@ -1,4 +1,4 @@ -#if WINDOWS && (NET461 || NETCOREAPP3_1) +#if WINDOWS && (NET461 || NETCOREAPP3_1_OR_GREATER) using System; using System.Collections.Generic; using System.Windows; diff --git a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods.cs b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods.cs index e18ea2951..f0f217357 100644 --- a/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods.cs +++ b/src/OpenCvSharp/Internal/PInvoke/NativeMethods/NativeMethods.cs @@ -187,7 +187,7 @@ public static bool IsUnix() return (p == PlatformID.Unix || p == PlatformID.MacOSX || (int)p == 128); -#elif NETCOREAPP3_1 +#elif NETCOREAPP3_1_OR_GREATER return RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.FreeBSD); diff --git a/src/OpenCvSharp/Modules/core/Mat/Mat.cs b/src/OpenCvSharp/Modules/core/Mat/Mat.cs index c099c94b9..00d2a5960 100644 --- a/src/OpenCvSharp/Modules/core/Mat/Mat.cs +++ b/src/OpenCvSharp/Modules/core/Mat/Mat.cs @@ -1205,7 +1205,7 @@ public MatExpr GreaterThanOrEqual(double d) } } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Extracts a rectangular submatrix. /// @@ -1375,7 +1375,7 @@ public Mat ColRange(OpenCvSharp.Range range) return ColRange(range.Start, range.End); } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Creates a matrix header for the specified column span. /// @@ -1426,7 +1426,7 @@ public Mat RowRange(OpenCvSharp.Range range) return RowRange(range.Start, range.End); } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Creates a matrix header for the specified row span. /// @@ -2425,7 +2425,7 @@ public Mat SubMat(OpenCvSharp.Range rowRange, OpenCvSharp.Range colRange) return SubMat(rowRange.Start, rowRange.End, colRange.Start, colRange.End); } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Extracts a rectangular submatrix. /// diff --git a/src/OpenCvSharp/Modules/core/Mat/UMat.cs b/src/OpenCvSharp/Modules/core/Mat/UMat.cs index 3e805d808..d3bd56edf 100644 --- a/src/OpenCvSharp/Modules/core/Mat/UMat.cs +++ b/src/OpenCvSharp/Modules/core/Mat/UMat.cs @@ -450,7 +450,7 @@ public static UMat Eye(int rows, int cols, MatType type) } } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Extracts a rectangular submatrix. /// @@ -619,7 +619,7 @@ public UMat ColRange(Range range) return ColRange(range.Start, range.End); } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Creates a matrix header for the specified column span. /// @@ -670,7 +670,7 @@ public UMat RowRange(Range range) return RowRange(range.Start, range.End); } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Creates a matrix header for the specified row span. /// @@ -1085,7 +1085,7 @@ public UMat SubMat(Range rowRange, Range colRange) return SubMat(rowRange.Start, rowRange.End, colRange.Start, colRange.End); } -#if NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP3_1_OR_GREATER || NETSTANDARD2_1 /// /// Extracts a rectangular submatrix. /// From fe8f26a1830d5b4d3703177aee292435212e9d71 Mon Sep 17 00:00:00 2001 From: yamachu Date: Fri, 3 Dec 2021 18:04:19 +0900 Subject: [PATCH 091/340] Rename Wasm to wasm --- nuget/OpenCvSharp4.runtime.wasm.csproj | 12 +++++++++++ nuget/OpenCvSharp4.runtime.wasm.nuspec | 28 ++++++++++++++++++++++++++ nuget/OpenCvSharp4.runtime.wasm.props | 6 ++++++ 3 files changed, 46 insertions(+) create mode 100644 nuget/OpenCvSharp4.runtime.wasm.csproj create mode 100644 nuget/OpenCvSharp4.runtime.wasm.nuspec create mode 100644 nuget/OpenCvSharp4.runtime.wasm.props diff --git a/nuget/OpenCvSharp4.runtime.wasm.csproj b/nuget/OpenCvSharp4.runtime.wasm.csproj new file mode 100644 index 000000000..b5f4fa651 --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.wasm.csproj @@ -0,0 +1,12 @@ + + + net6.0; + true + false + OpenCvSharp4.runtime.Wasm.nuspec + + + + + diff --git a/nuget/OpenCvSharp4.runtime.wasm.nuspec b/nuget/OpenCvSharp4.runtime.wasm.nuspec new file mode 100644 index 000000000..e13194419 --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.wasm.nuspec @@ -0,0 +1,28 @@ + + + + OpenCvSharp4.runtime.Wasm + 4.3.0.20191030 + OpenCvSharp native bindings for Wasm + shimat,vladkol + Apache-2.0 + + https://github.com/shimat/opencvsharp + https://raw.githubusercontent.com/shimat/opencvsharp/master/nuget/icon/opencvsharp.png + false + Internal implementation package for OpenCvSharp to work on Wasm + Internal implementation package for OpenCvSharp to work on Wasm + + Copyright 2008-2020 + Image Processing OpenCV Wrapper FFI opencvsharp + + + + + + + + + + + \ No newline at end of file diff --git a/nuget/OpenCvSharp4.runtime.wasm.props b/nuget/OpenCvSharp4.runtime.wasm.props new file mode 100644 index 000000000..71c05c474 --- /dev/null +++ b/nuget/OpenCvSharp4.runtime.wasm.props @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From ced900785a94b4383570ce70a06351d554add790 Mon Sep 17 00:00:00 2001 From: yamachu Date: Fri, 3 Dec 2021 18:06:07 +0900 Subject: [PATCH 092/340] Remove Upper case Wasm --- nuget/OpenCvSharp4.runtime.Wasm.csproj | 12 ----------- nuget/OpenCvSharp4.runtime.Wasm.nuspec | 28 -------------------------- nuget/OpenCvSharp4.runtime.Wasm.props | 6 ------ 3 files changed, 46 deletions(-) delete mode 100644 nuget/OpenCvSharp4.runtime.Wasm.csproj delete mode 100644 nuget/OpenCvSharp4.runtime.Wasm.nuspec delete mode 100644 nuget/OpenCvSharp4.runtime.Wasm.props diff --git a/nuget/OpenCvSharp4.runtime.Wasm.csproj b/nuget/OpenCvSharp4.runtime.Wasm.csproj deleted file mode 100644 index b5f4fa651..000000000 --- a/nuget/OpenCvSharp4.runtime.Wasm.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - net6.0; - true - false - OpenCvSharp4.runtime.Wasm.nuspec - - - - - diff --git a/nuget/OpenCvSharp4.runtime.Wasm.nuspec b/nuget/OpenCvSharp4.runtime.Wasm.nuspec deleted file mode 100644 index e13194419..000000000 --- a/nuget/OpenCvSharp4.runtime.Wasm.nuspec +++ /dev/null @@ -1,28 +0,0 @@ - - - - OpenCvSharp4.runtime.Wasm - 4.3.0.20191030 - OpenCvSharp native bindings for Wasm - shimat,vladkol - Apache-2.0 - - https://github.com/shimat/opencvsharp - https://raw.githubusercontent.com/shimat/opencvsharp/master/nuget/icon/opencvsharp.png - false - Internal implementation package for OpenCvSharp to work on Wasm - Internal implementation package for OpenCvSharp to work on Wasm - - Copyright 2008-2020 - Image Processing OpenCV Wrapper FFI opencvsharp - - - - - - - - - - - \ No newline at end of file diff --git a/nuget/OpenCvSharp4.runtime.Wasm.props b/nuget/OpenCvSharp4.runtime.Wasm.props deleted file mode 100644 index 71c05c474..000000000 --- a/nuget/OpenCvSharp4.runtime.Wasm.props +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From f014bfc00cd1f628f2ba492224372b8835646e6b Mon Sep 17 00:00:00 2001 From: yamachu Date: Fri, 3 Dec 2021 18:07:50 +0900 Subject: [PATCH 093/340] Wasm to wasm --- .github/workflows/wasm.yml | 6 +++--- nuget/OpenCvSharp4.runtime.wasm.csproj | 2 +- nuget/OpenCvSharp4.runtime.wasm.nuspec | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml index 9e96aa823..012087335 100644 --- a/.github/workflows/wasm.yml +++ b/.github/workflows/wasm.yml @@ -162,9 +162,9 @@ jobs: run: | yyyymmdd=`date '+%Y%m%d'` echo $yyyymmdd - sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.${yyyymmdd}${BETA}<\/version>/" ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.Wasm.nuspec - cat ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.Wasm.nuspec - dotnet pack ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.Wasm.csproj -o ${GITHUB_WORKSPACE}/artifacts_wasm + sed -E --in-place=.bak "s/[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/${OPENCV_VERSION}.${yyyymmdd}${BETA}<\/version>/" ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.wasm.nuspec + cat ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.wasm.nuspec + dotnet pack ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.wasm.csproj -o ${GITHUB_WORKSPACE}/artifacts_wasm ls ${GITHUB_WORKSPACE}/artifacts_wasm - uses: actions/upload-artifact@v1 diff --git a/nuget/OpenCvSharp4.runtime.wasm.csproj b/nuget/OpenCvSharp4.runtime.wasm.csproj index b5f4fa651..9640c42b7 100644 --- a/nuget/OpenCvSharp4.runtime.wasm.csproj +++ b/nuget/OpenCvSharp4.runtime.wasm.csproj @@ -3,7 +3,7 @@ net6.0; true false - OpenCvSharp4.runtime.Wasm.nuspec + OpenCvSharp4.runtime.wasm.nuspec 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

;23{;)(9>7BRx=D})s*JEX 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