diff --git a/.github/workflows/docfx.yml b/.github/workflows/docfx.yml index bf06bee66..46dee2e8c 100644 --- a/.github/workflows/docfx.yml +++ b/.github/workflows/docfx.yml @@ -3,7 +3,7 @@ name: DocFX on: push: branches: - - master + - main workflow_dispatch: jobs: diff --git a/.github/workflows/linux-arm.yml b/.github/workflows/linux-arm.yml index 72a0b8079..4a51c5c80 100644 --- a/.github/workflows/linux-arm.yml +++ b/.github/workflows/linux-arm.yml @@ -5,11 +5,11 @@ on: types: [synchronize, opened] push: branches: - - master + - main env: DEBIAN_FRONTEND: noninteractive - OPENCV_VERSION: 4.7.0 + OPENCV_VERSION: 4.8.0 jobs: build: @@ -31,7 +31,7 @@ jobs: --output=type=docker \ --platform=linux/arm/v7 \ --build-arg OPENCV_VERSION \ - ./docker/ubuntu22-dotnet6-opencv4.7.0 + ./docker/ubuntu22-dotnet6-opencv4.8.0 - name: Extract build files from Docker instance run: | diff --git a/.github/workflows/macos10.yml.disabled b/.github/workflows/macos10.yml.disabled index 5ac7bd546..6335c77ca 100644 --- a/.github/workflows/macos10.yml.disabled +++ b/.github/workflows/macos10.yml.disabled @@ -5,11 +5,11 @@ on: types: [synchronize, opened] push: branches: - - master + - main env: DEBIAN_FRONTEND: noninteractive - OPENCV_VERSION: 4.7.0 + OPENCV_VERSION: 4.8.0 jobs: build: diff --git a/.github/workflows/publish_nuget.yml b/.github/workflows/publish_nuget.yml index 2f6533617..64ff2f332 100644 --- a/.github/workflows/publish_nuget.yml +++ b/.github/workflows/publish_nuget.yml @@ -31,12 +31,12 @@ jobs: workflow: linux-arm.yml name: artifacts_linux_arm - - name: Download macos artifact - uses: dawidd6/action-download-artifact@v2 - with: - github_token: ${{secrets.GITHUB_TOKEN}} - workflow: macos10.yml - name: artifacts_macos_10 + #- name: Download macos artifact + # uses: dawidd6/action-download-artifact@v2 + # with: + # github_token: ${{secrets.GITHUB_TOKEN}} + # workflow: macos10.yml + # name: artifacts_macos_10 - name: Download wasm artifact uses: dawidd6/action-download-artifact@v2 diff --git a/.github/workflows/ubuntu20.yml b/.github/workflows/ubuntu20.yml index 9f7b27d7a..30b7d2812 100644 --- a/.github/workflows/ubuntu20.yml +++ b/.github/workflows/ubuntu20.yml @@ -5,11 +5,11 @@ on: types: [synchronize, opened] push: branches: - - master + - main env: DEBIAN_FRONTEND: noninteractive - OPENCV_VERSION: 4.7.0 + OPENCV_VERSION: 4.8.0 OPENCV_CACHE_VERSION: 1 jobs: diff --git a/.github/workflows/wasm.yml b/.github/workflows/wasm.yml index 1df4cfa91..b1f2f6dd9 100644 --- a/.github/workflows/wasm.yml +++ b/.github/workflows/wasm.yml @@ -5,11 +5,11 @@ on: types: [synchronize, opened] push: branches: - - master + - main env: DEBIAN_FRONTEND: noninteractive - OPENCV_VERSION: 4.7.0 + OPENCV_VERSION: 4.8.0 EM_VERSION: 3.1.32 EM_CACHE_FOLDER: 'emsdk-cache' diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index fa423b868..f686d186f 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -5,10 +5,10 @@ on: types: [synchronize, opened] push: branches: - - master + - main env: - OPENCV_VERSION: 4.7.0 + OPENCV_VERSION: 4.8.0 jobs: build: diff --git a/OpenCvSharp.sln.DotSettings b/OpenCvSharp.sln.DotSettings index 9ff420506..a14671ed8 100644 --- a/OpenCvSharp.sln.DotSettings +++ b/OpenCvSharp.sln.DotSettings @@ -64,7 +64,9 @@ True True + True True + True True True True @@ -88,6 +90,7 @@ True True True + True True True True @@ -134,6 +137,7 @@ True True True + True True True True diff --git a/docker/ubuntu18-dotnetcore3.1-opencv4.5.3/Dockerfile b/docker/ubuntu18-dotnetcore3.1-opencv4.5.3/Dockerfile deleted file mode 100644 index c2a46a59f..000000000 --- a/docker/ubuntu18-dotnetcore3.1-opencv4.5.3/Dockerfile +++ /dev/null @@ -1,148 +0,0 @@ -FROM mcr.microsoft.com/dotnet/sdk:3.1-focal -ENV DEBIAN_FRONTEND=noninteractive -ARG OPENCV_VERSION=4.5.3 - -WORKDIR / - -# Install opencv dependencies -RUN apt-get update && apt-get -y install --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 \ - libgdiplus \ - && apt-get -y clean \ - && rm -rf /var/lib/apt/lists/* - -# Setup opencv and opencv-contrib source -RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ - unzip ${OPENCV_VERSION}.zip && \ - rm ${OPENCV_VERSION}.zip && \ - mv opencv-${OPENCV_VERSION} opencv && \ - wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ - unzip ${OPENCV_VERSION}.zip && \ - rm ${OPENCV_VERSION}.zip && \ - mv opencv_contrib-${OPENCV_VERSION} opencv_contrib - -# Build OpenCV -RUN cd opencv && mkdir build && cd build && \ - cmake \ - -D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D BUILD_SHARED_LIBS=OFF \ - -D ENABLE_CXX11=ON \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_JAVA=OFF \ - -D BUILD_opencv_app=OFF \ - -D BUILD_opencv_barcode=OFF \ - -D BUILD_opencv_java_bindings_generator=OFF \ - -D BUILD_opencv_js_bindings_generator=OFF \ - -D BUILD_opencv_python_bindings_generator=OFF \ - -D BUILD_opencv_python_tests=OFF \ - -D BUILD_opencv_ts=OFF \ - -D BUILD_opencv_js=OFF \ - -D BUILD_opencv_bioinspired=OFF \ - -D BUILD_opencv_ccalib=OFF \ - -D BUILD_opencv_datasets=OFF \ - -D BUILD_opencv_dnn_objdetect=OFF \ - -D BUILD_opencv_dpm=OFF \ - -D BUILD_opencv_fuzzy=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D BUILD_opencv_intensity_transform=OFF \ - -D BUILD_opencv_mcc=OFF \ - -D BUILD_opencv_objc_bindings_generator=OFF \ - -D BUILD_opencv_rapid=OFF \ - -D BUILD_opencv_reg=OFF \ - -D BUILD_opencv_stereo=OFF \ - -D BUILD_opencv_structured_light=OFF \ - -D BUILD_opencv_surface_matching=OFF \ - -D BUILD_opencv_videostab=OFF \ - -D BUILD_opencv_wechat_qrcode=ON \ - -D WITH_GSTREAMER=OFF \ - -D WITH_ADE=OFF \ - -D OPENCV_ENABLE_NONFREE=ON \ - .. && make -j$(nproc) && make install && ldconfig - -# Download OpenCvSharp -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$(nproc) && make install && \ - rm -rf /opencv && \ - rm -rf /opencv_contrib && \ - mkdir /artifacts && \ - cp /opencvsharp/make/OpenCvSharpExtern/libOpenCvSharpExtern.so /artifacts/ - -# Test OpenCvSharpExtern -RUN cp artifacts/libOpenCvSharpExtern.so /usr/lib/ && \ - echo "\n\ -#include \n\ -int core_Mat_sizeof(); \n\ -int main(){ \n\ - int i = core_Mat_sizeof(); \n\ - printf(\"sizeof(Mat) = %d\", i); \n\ - return 0; \n\ -}" > /test.c && \ - gcc -I./ -L./ test.c -o test -lOpenCvSharpExtern && \ - LD_LIBRARY_PATH=. ./test && \ - rm -f /test* - -# Install Build the C# part of OpenCvSharp -#RUN cd /opencvsharp/src/OpenCvSharp && \ -# dotnet build -c Release -f netstandard2.1 && \ -# cd /opencvsharp/src/OpenCvSharp.Blob && \ -# dotnet build -c Release -f netstandard2.1 && \ -# cd /opencvsharp/src/OpenCvSharp.Extensions && \ -# dotnet build -c Release -f netstandard2.1 && \ -# cp /opencvsharp/src/OpenCvSharp/bin/Release/netstandard2.1/* /artifacts/ && \ -# cp /opencvsharp/src/OpenCvSharp.Blob/bin/Release/netstandard2.1/* /artifacts/ && \ -# cp /opencvsharp/src/OpenCvSharp.Extensions/bin/Release/netstandard2.1/* /artifacts/ - -# Test OpenCvSharp -#RUN dotnet test /opencvsharp/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj -c Release -f netcoreapp3.1 --runtime ubuntu.18.04-x64 --logger "trx;LogFileName=test-results.trx" < /dev/null - -RUN rm -rf /opencvsharp - -# Simple console app test using NuGet -#RUN dotnet new console -f netcoreapp3.1 -o "ConsoleApp01" && cd /ConsoleApp01 && \ -# echo "\n\ -#using System; \n\ -#using OpenCvSharp; \n\ -#class Program{ \n\ -# static void Main(){ \n\ -# Console.WriteLine(Cv2.GetTickCount()); \n\ -# using var mat = new Mat(1, 1, MatType.CV_8UC1); \n\ -# Console.WriteLine(mat.CvPtr); \n\ -# } \n\ -#}" > Program.cs && \ -# dotnet add package OpenCvSharp4 && \ -# dotnet run && \ -# rm -rf /ConsoleApp01 - -#RUN ldd /artifacts/libOpenCvSharpExtern.so diff --git a/docker/ubuntu20-dotnet6sdk-opencv4.5.3/Dockerfile b/docker/ubuntu20-dotnet6sdk-opencv4.5.3/Dockerfile deleted file mode 100644 index 6c057eb32..000000000 --- a/docker/ubuntu20-dotnet6sdk-opencv4.5.3/Dockerfile +++ /dev/null @@ -1,160 +0,0 @@ -FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal as builder - -ENV DEBIAN_FRONTEND=noninteractive -ENV OPENCV_VERSION=4.5.3 - -WORKDIR / - -# Install opencv dependencies -RUN apt-get update && apt-get -y install --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 \ - libgdiplus \ - && apt-get -y clean \ - && rm -rf /var/lib/apt/lists/* - -# Setup opencv and opencv-contrib source -RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ - unzip ${OPENCV_VERSION}.zip && \ - rm ${OPENCV_VERSION}.zip && \ - mv opencv-${OPENCV_VERSION} opencv && \ - wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ - unzip ${OPENCV_VERSION}.zip && \ - rm ${OPENCV_VERSION}.zip && \ - mv opencv_contrib-${OPENCV_VERSION} opencv_contrib - -# Build OpenCV -RUN cd opencv && mkdir build && cd build && \ - cmake \ - -D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D BUILD_SHARED_LIBS=OFF \ - -D ENABLE_CXX11=ON \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_JAVA=OFF \ - -D BUILD_opencv_app=OFF \ - -D BUILD_opencv_barcode=OFF \ - -D BUILD_opencv_java_bindings_generator=OFF \ - -D BUILD_opencv_js_bindings_generator=OFF \ - -D BUILD_opencv_python_bindings_generator=OFF \ - -D BUILD_opencv_python_tests=OFF \ - -D BUILD_opencv_ts=OFF \ - -D BUILD_opencv_js=OFF \ - -D BUILD_opencv_bioinspired=OFF \ - -D BUILD_opencv_ccalib=OFF \ - -D BUILD_opencv_datasets=OFF \ - -D BUILD_opencv_dnn_objdetect=OFF \ - -D BUILD_opencv_dpm=OFF \ - -D BUILD_opencv_fuzzy=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D BUILD_opencv_intensity_transform=OFF \ - -D BUILD_opencv_mcc=OFF \ - -D BUILD_opencv_objc_bindings_generator=OFF \ - -D BUILD_opencv_rapid=OFF \ - -D BUILD_opencv_reg=OFF \ - -D BUILD_opencv_stereo=OFF \ - -D BUILD_opencv_structured_light=OFF \ - -D BUILD_opencv_surface_matching=OFF \ - -D BUILD_opencv_videostab=OFF \ - -D BUILD_opencv_wechat_qrcode=ON \ - -D WITH_GSTREAMER=OFF \ - -D WITH_ADE=OFF \ - -D OPENCV_ENABLE_NONFREE=ON \ - .. && make -j$(nproc) && make install && ldconfig - -# Download OpenCvSharp -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$(nproc) && make install && \ - rm -rf /opencv && \ - rm -rf /opencv_contrib && \ - cp /opencvsharp/make/OpenCvSharpExtern/libOpenCvSharpExtern.so /usr/lib/ - - -########## Test native .so file ########## - -FROM mcr.microsoft.com/dotnet/sdk:6.0-focal -RUN apt-get update && apt-get -y install --no-install-recommends gcc -# /usr/lib/libOpenCvSharpExtern.so -# /usr/local/lib/libopencv_*.a -COPY --from=builder /usr/lib /usr/lib -#COPY --from=builder /usr/local/lib /usr/local/lib - -RUN echo "\n\ -#include \n\ -int core_Mat_sizeof(); \n\ -int main(){ \n\ - int i = core_Mat_sizeof(); \n\ - printf(\"sizeof(Mat) = %d\", i); \n\ - return 0; \n\ -}" > /test.c && \ - gcc -I./ -L./ test.c -o test -lOpenCvSharpExtern && \ - LD_LIBRARY_PATH=. ./test - - -########## Test .NET class libraries ########## - -FROM mcr.microsoft.com/dotnet/sdk:6.0-focal -COPY --from=builder /usr/lib /usr/lib -# Install Build the C# part of OpenCvSharp -RUN git clone https://github.com/shimat/opencvsharp.git && cd opencvsharp -RUN cd /opencvsharp/src/OpenCvSharp && \ - dotnet build -c Release -f net6.0 && \ - cd /opencvsharp/src/OpenCvSharp.Extensions && \ - dotnet build -c Release -f net6.0 - -RUN dotnet test /opencvsharp/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj -c Release -f net6.0 --runtime ubuntu.20.04-x64 --logger "trx;LogFileName=test-results.trx" < /dev/null - -# Simple console app test using NuGet -# RUN dotnet new console -f net6.0 -o "ConsoleApp01" && cd /ConsoleApp01 && \ -# echo "\n\ -# using System; \n\ -# using OpenCvSharp; \n\ -# class Program{ \n\ -# static void Main(){ \n\ -# Console.WriteLine(Cv2.GetTickCount()); \n\ -# using var mat = new Mat(1, 1, MatType.CV_8UC1); \n\ -# Console.WriteLine(mat.CvPtr); \n\ -# } \n\ -# }" > Program.cs && \ -# dotnet add package OpenCvSharp4 && \ -# dotnet run && \ -# rm -rf /ConsoleApp01 - -#RUN ldd /artifacts/libOpenCvSharpExtern.so - - - -########## Final image ########## - -FROM mcr.microsoft.com/dotnet/sdk:6.0-focal as final -COPY --from=builder /usr/lib /usr/lib diff --git a/docker/ubuntu20-dotnet6-opencv4.5.3/Dockerfile b/docker/ubuntu22-dotnet6-opencv4.8.0/Dockerfile similarity index 87% rename from docker/ubuntu20-dotnet6-opencv4.5.3/Dockerfile rename to docker/ubuntu22-dotnet6-opencv4.8.0/Dockerfile index 566f5b484..fe9d4235b 100644 --- a/docker/ubuntu20-dotnet6-opencv4.5.3/Dockerfile +++ b/docker/ubuntu22-dotnet6-opencv4.8.0/Dockerfile @@ -1,7 +1,7 @@ -FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal as builder +FROM mcr.microsoft.com/dotnet/aspnet:6.0-jammy as builder ENV DEBIAN_FRONTEND=noninteractive -ENV OPENCV_VERSION=4.5.3 +ENV OPENCV_VERSION=4.8.0 WORKDIR / @@ -21,7 +21,7 @@ RUN apt-get update && apt-get -y install --no-install-recommends \ libavcodec-dev \ libavformat-dev \ libswscale-dev \ - libdc1394-22-dev \ + libdc1394-dev \ libxine2-dev \ libv4l-dev \ libtheora-dev \ @@ -29,7 +29,6 @@ RUN apt-get update && apt-get -y install --no-install-recommends \ libxvidcore-dev \ libopencore-amrnb-dev \ libopencore-amrwb-dev \ - libavresample-dev \ x264 \ libtesseract-dev \ libgdiplus \ @@ -37,12 +36,12 @@ RUN apt-get update && apt-get -y install --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # Setup opencv and opencv-contrib source -RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ - unzip ${OPENCV_VERSION}.zip && \ +RUN wget -q https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ + unzip -q ${OPENCV_VERSION}.zip && \ rm ${OPENCV_VERSION}.zip && \ mv opencv-${OPENCV_VERSION} opencv && \ - wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ - unzip ${OPENCV_VERSION}.zip && \ + wget -q https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ + unzip -q ${OPENCV_VERSION}.zip && \ rm ${OPENCV_VERSION}.zip && \ mv opencv_contrib-${OPENCV_VERSION} opencv_contrib @@ -97,12 +96,14 @@ RUN mkdir /opencvsharp/make && cd /opencvsharp/make && \ make -j$(nproc) && make install && \ rm -rf /opencv && \ rm -rf /opencv_contrib && \ - cp /opencvsharp/make/OpenCvSharpExtern/libOpenCvSharpExtern.so /usr/lib/ + cp /opencvsharp/make/OpenCvSharpExtern/libOpenCvSharpExtern.so /usr/lib/ && \ + mkdir /artifacts && \ + cp /opencvsharp/make/OpenCvSharpExtern/libOpenCvSharpExtern.so /artifacts/ ########## Test native .so file ########## -FROM mcr.microsoft.com/dotnet/sdk:6.0-focal +FROM mcr.microsoft.com/dotnet/sdk:6.0-jammy RUN apt-get update && apt-get -y install --no-install-recommends gcc # /usr/lib/libOpenCvSharpExtern.so # /usr/local/lib/libopencv_*.a @@ -123,7 +124,7 @@ int main(){ \n\ ########## Test .NET class libraries ########## -FROM mcr.microsoft.com/dotnet/sdk:6.0-focal +FROM mcr.microsoft.com/dotnet/sdk:6.0-jammy COPY --from=builder /usr/lib /usr/lib # Install Build the C# part of OpenCvSharp RUN git clone https://github.com/shimat/opencvsharp.git && cd opencvsharp @@ -156,5 +157,6 @@ RUN dotnet test /opencvsharp/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj -c ########## Final image ########## -FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal as final +FROM mcr.microsoft.com/dotnet/aspnet:6.0-jammy as final COPY --from=builder /usr/lib /usr/lib +COPY --from=builder /artifacts /artifacts diff --git a/download_opencv_windows.ps1 b/download_opencv_windows.ps1 index aad985065..0e5c29b21 100644 --- a/download_opencv_windows.ps1 +++ b/download_opencv_windows.ps1 @@ -1,5 +1,5 @@ -$tag = "4.7.0.20230103-beta" -$version = "470" +$tag = "4.8.0.20230705" +$version = "480" $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/download_tesseract_windows.ps1 b/download_tesseract_windows.ps1 index 2076517bb..67a0ae109 100644 --- a/download_tesseract_windows.ps1 +++ b/download_tesseract_windows.ps1 @@ -1,5 +1,5 @@ $uriArray = @( - "https://github.com/shimat/tesseract_vcpkg/releases/download/2021.12.31/tesseract_vcpkg.0.0.7-beta.zip" + "https://github.com/shimat/tesseract_vcpkg/releases/download/2023.07.06-beta/tesseract_vcpkg.0.0.8-beta.nupkg" ) function Download($uri, $outFile) { diff --git a/nuget/OpenCvSharp4.Extensions.nuspec b/nuget/OpenCvSharp4.Extensions.nuspec index e3f9bfef9..0cec22c90 100644 --- a/nuget/OpenCvSharp4.Extensions.nuspec +++ b/nuget/OpenCvSharp4.Extensions.nuspec @@ -18,23 +18,19 @@ - + - + - - - - - + - + @@ -56,12 +52,8 @@ - - - - - \ No newline at end of file + diff --git a/nuget/OpenCvSharp4.WpfExtensions.nuspec b/nuget/OpenCvSharp4.WpfExtensions.nuspec index d348574f0..861396f89 100644 --- a/nuget/OpenCvSharp4.WpfExtensions.nuspec +++ b/nuget/OpenCvSharp4.WpfExtensions.nuspec @@ -18,9 +18,11 @@ + - + + @@ -35,10 +37,10 @@ - + - - - + + + - \ No newline at end of file + diff --git a/nuget/OpenCvSharp4.nuspec b/nuget/OpenCvSharp4.nuspec index 632e319dd..76a7e1e27 100644 --- a/nuget/OpenCvSharp4.nuspec +++ b/nuget/OpenCvSharp4.nuspec @@ -18,24 +18,20 @@ - + - + - - - - - + - + @@ -57,10 +53,6 @@ - - - - diff --git a/nuget/OpenCvSharp4.runtime.uwp.nuspec b/nuget/OpenCvSharp4.runtime.uwp.nuspec index 1816b5f2a..3e7ada330 100644 --- a/nuget/OpenCvSharp4.runtime.uwp.nuspec +++ b/nuget/OpenCvSharp4.runtime.uwp.nuspec @@ -26,11 +26,11 @@ - - - - - - + + + + + + diff --git a/nuget/OpenCvSharp4.runtime.win.nuspec b/nuget/OpenCvSharp4.runtime.win.nuspec index d3088c363..ff7668773 100644 --- a/nuget/OpenCvSharp4.runtime.win.nuspec +++ b/nuget/OpenCvSharp4.runtime.win.nuspec @@ -19,7 +19,7 @@ - + @@ -27,8 +27,8 @@ - - + + diff --git a/nuget/OpenCvSharp4.runtime.win.props b/nuget/OpenCvSharp4.runtime.win.props index 393a2e5c2..654fd02f9 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_ffmpeg455.dll + + dll\x86\opencv_videoio_ffmpeg480.dll PreserveNewest @@ -17,8 +17,8 @@ dll\x64\OpenCvSharpExtern.dll PreserveNewest - - dll\x64\opencv_videoio_ffmpeg455_64.dll + + dll\x64\opencv_videoio_ffmpeg480_64.dll PreserveNewest diff --git a/samples b/samples index 0accbeed2..e4dc885f1 160000 --- a/samples +++ b/samples @@ -1 +1 @@ -Subproject commit 0accbeed2ae0e7cdb852e670d600ff71307a8da9 +Subproject commit e4dc885f18dfb63c8b66f4489b5da803eeccdaa2 diff --git a/src/OpenCvSharp.Extensions/BitmapConverter.cs b/src/OpenCvSharp.Extensions/BitmapConverter.cs index 2137ba756..f98a56ce0 100644 --- a/src/OpenCvSharp.Extensions/BitmapConverter.cs +++ b/src/OpenCvSharp.Extensions/BitmapConverter.cs @@ -20,6 +20,8 @@ public static class BitmapConverter /// A Mat object which is converted from System.Drawing.Bitmap public static Mat ToMat(this Bitmap src) { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + throw new NotSupportedException("Non-Windows OS are not supported"); if (src is null) throw new ArgumentNullException(nameof(src)); @@ -53,6 +55,8 @@ public static Mat ToMat(this Bitmap src) /// A Mat object which is converted from System.Drawing.Bitmap public static unsafe void ToMat(this Bitmap src, Mat dst) { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + throw new NotSupportedException("Non-Windows OS are not supported"); if (src is null) throw new ArgumentNullException(nameof(src)); if (dst is null) @@ -319,10 +323,10 @@ void Format32bppRgb() /// public static Bitmap ToBitmap(this Mat src) { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + throw new NotSupportedException("Non-Windows OS are not supported"); if (src is null) - { throw new ArgumentNullException(nameof(src)); - } PixelFormat pf; switch (src.Channels()) @@ -347,6 +351,8 @@ public static Bitmap ToBitmap(this Mat src) /// public static Bitmap ToBitmap(this Mat src, PixelFormat pf) { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + throw new NotSupportedException("Non-Windows OS are not supported"); if (src is null) throw new ArgumentNullException(nameof(src)); src.ThrowIfDisposed(); @@ -364,6 +370,8 @@ public static Bitmap ToBitmap(this Mat src, PixelFormat pf) /// Author: shimat, Gummo (ROI support) public static unsafe void ToBitmap(this Mat src, Bitmap dst) { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + throw new NotSupportedException("Non-Windows OS are not supported"); if (src is null) throw new ArgumentNullException(nameof(src)); if (dst is null) diff --git a/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj b/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj index e82658eec..71174ba3c 100644 --- a/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj +++ b/src/OpenCvSharp.Extensions/OpenCvSharp.Extensions.csproj @@ -1,7 +1,7 @@  - net48;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0; + net48;netstandard2.0;netstandard2.1;net6.0; true true OpenCvSharp.Extensions @@ -43,7 +43,7 @@ - 5.0.3 + 7.0.0 diff --git a/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs b/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs index d0c43973b..9dd67b94f 100644 --- a/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs +++ b/src/OpenCvSharp.WpfExtensions/BitmapSourceConverter.cs @@ -9,255 +9,246 @@ using System.Windows.Threading; using PixelFormat = System.Windows.Media.PixelFormat; -namespace OpenCvSharp.WpfExtensions +namespace OpenCvSharp.WpfExtensions; + +/// +/// Static class which provides conversion between System.Windows.Media.Imaging.BitmapSource and IplImage +/// +public static class BitmapSourceConverter { /// - /// Static class which provides conversion between System.Windows.Media.Imaging.BitmapSource and IplImage + /// Converts Mat to BitmapSource. /// - public static class BitmapSourceConverter + /// Input IplImage + /// BitmapSource + public static BitmapSource ToBitmapSource( + this Mat src) => + src.ToWriteableBitmap(); + + /// + /// Converts Mat to BitmapSource. + /// + /// Input IplImage + /// + /// + /// + /// + /// BitmapSource + public static BitmapSource ToBitmapSource( + this Mat src, + int horizontalResolution, + int verticalResolution, + PixelFormat pixelFormat, + BitmapPalette palette) => + src.ToWriteableBitmap(horizontalResolution, verticalResolution, pixelFormat, palette); + + /// + /// Converts System.Drawing.Bitmap to BitmapSource. + /// + /// Input System.Drawing.Bitmap + /// http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource + /// BitmapSource + public static BitmapSource ToBitmapSource(this Bitmap src) { - /// - /// Converts Mat to BitmapSource. - /// - /// Input IplImage - /// BitmapSource - public static BitmapSource ToBitmapSource( - this Mat src) - { - return src.ToWriteableBitmap(); - } + if (src is null) + throw new ArgumentNullException(nameof(src)); - /// - /// Converts Mat to BitmapSource. - /// - /// Input IplImage - /// - /// - /// - /// - /// BitmapSource - public static BitmapSource ToBitmapSource( - this Mat src, - int horizontalResolution, - int verticalResolution, - PixelFormat pixelFormat, - BitmapPalette palette) + if (Application.Current?.Dispatcher is null) { - return src.ToWriteableBitmap(horizontalResolution, verticalResolution, pixelFormat, palette); + using var memoryStream = new MemoryStream(); + src.Save(memoryStream, ImageFormat.Png); + return CreateBitmapSourceFromBitmap(memoryStream); } - /// - /// Converts System.Drawing.Bitmap to BitmapSource. - /// - /// Input System.Drawing.Bitmap - /// http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource - /// BitmapSource - public static BitmapSource ToBitmapSource(this Bitmap src) + using (var memoryStream = new MemoryStream()) { - if (src is null) - throw new ArgumentNullException(nameof(src)); + // You need to specify the image format to fill the stream. + // I'm assuming it is PNG + src.Save(memoryStream, ImageFormat.Png); + memoryStream.Seek(0, SeekOrigin.Begin); + + // Make sure to create the bitmap in the UI thread + if (IsInvokeRequired()) + return (BitmapSource) Application.Current.Dispatcher.Invoke( + new Func(CreateBitmapSourceFromBitmap), + DispatcherPriority.Normal, + memoryStream); + + return CreateBitmapSourceFromBitmap(memoryStream); + } + } - if (Application.Current?.Dispatcher is null) - { - using (var memoryStream = new MemoryStream()) - { - src.Save(memoryStream, ImageFormat.Png); - return CreateBitmapSourceFromBitmap(memoryStream); - } - } + // http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource + private static bool IsInvokeRequired() + => Dispatcher.CurrentDispatcher != Application.Current.Dispatcher; - using (var memoryStream = new MemoryStream()) - { - // You need to specify the image format to fill the stream. - // I'm assuming it is PNG - src.Save(memoryStream, ImageFormat.Png); - memoryStream.Seek(0, SeekOrigin.Begin); + // http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource + private static BitmapSource CreateBitmapSourceFromBitmap(Stream stream) + { + var bitmapDecoder = BitmapDecoder.Create( + stream, + BitmapCreateOptions.PreservePixelFormat, + BitmapCacheOption.OnLoad); - // Make sure to create the bitmap in the UI thread - if (IsInvokeRequired()) - return (BitmapSource) Application.Current.Dispatcher.Invoke( - new Func(CreateBitmapSourceFromBitmap), - DispatcherPriority.Normal, - memoryStream); + // This will disconnect the stream from the image completely... + var writable = new WriteableBitmap(bitmapDecoder.Frames.Single()); + writable.Freeze(); - return CreateBitmapSourceFromBitmap(memoryStream); - } - } + return writable; + } - // http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource - private static bool IsInvokeRequired() - { - return Dispatcher.CurrentDispatcher != Application.Current.Dispatcher; - } + #region ToMat - // http://www.codeproject.com/Articles/104929/Bitmap-to-BitmapSource - private static BitmapSource CreateBitmapSourceFromBitmap(Stream stream) + /// + /// Converts BitmapSource to Mat + /// + /// Input BitmapSource + /// IplImage + public static Mat ToMat(this BitmapSource src) + { + if (src is null) { - var bitmapDecoder = BitmapDecoder.Create( - stream, - BitmapCreateOptions.PreservePixelFormat, - BitmapCacheOption.OnLoad); - - // This will disconnect the stream from the image completely... - var writable = new WriteableBitmap(bitmapDecoder.Frames.Single()); - writable.Freeze(); - - return writable; + throw new ArgumentNullException(nameof(src)); } - #region ToMat + int w = src.PixelWidth; + int h = src.PixelHeight; + MatType type = WriteableBitmapConverter.GetOptimumType(src.Format); + Mat dst = new Mat(h, w, type); + ToMat(src, dst); + return dst; + } - /// - /// Converts BitmapSource to Mat - /// - /// Input BitmapSource - /// IplImage - public static Mat ToMat(this BitmapSource src) + /// + /// Converts BitmapSource to Mat + /// + /// Input BitmapSource + /// Output Mat + public static void ToMat(this BitmapSource src, Mat dst) + { + if (src is null) + throw new ArgumentNullException(nameof(src)); + if (dst is null) + throw new ArgumentNullException(nameof(dst)); + if (src.PixelWidth != dst.Width || src.PixelHeight != dst.Height) + throw new ArgumentException("size of src must be equal to size of dst"); + if (dst.Dims > 2) + throw new ArgumentException("Mat dimensions must be 2"); + + int w = src.PixelWidth; + int h = src.PixelHeight; + int bpp = src.Format.BitsPerPixel; + int channels = WriteableBitmapConverter.GetOptimumChannels(src.Format); + if (dst.Channels() != channels) { - if (src is null) - { - throw new ArgumentNullException(nameof(src)); - } - - int w = src.PixelWidth; - int h = src.PixelHeight; - MatType type = WriteableBitmapConverter.GetOptimumType(src.Format); - Mat dst = new Mat(h, w, type); - ToMat(src, dst); - return dst; + throw new ArgumentException("nChannels of dst is invalid", nameof(dst)); } - /// - /// Converts BitmapSource to Mat - /// - /// Input BitmapSource - /// Output Mat - public static void ToMat(this BitmapSource src, Mat dst) - { - if (src is null) - throw new ArgumentNullException(nameof(src)); - if (dst is null) - throw new ArgumentNullException(nameof(dst)); - if (src.PixelWidth != dst.Width || src.PixelHeight != dst.Height) - throw new ArgumentException("size of src must be equal to size of dst"); - if (dst.Dims > 2) - throw new ArgumentException("Mat dimensions must be 2"); + bool submat = dst.IsSubmatrix(); + bool continuous = dst.IsContinuous(); - int w = src.PixelWidth; - int h = src.PixelHeight; - int bpp = src.Format.BitsPerPixel; - int channels = WriteableBitmapConverter.GetOptimumChannels(src.Format); - if (dst.Channels() != channels) - { - throw new ArgumentException("nChannels of dst is invalid", nameof(dst)); - } - - bool submat = dst.IsSubmatrix(); - bool continuous = dst.IsContinuous(); + unsafe + { + byte* p = (byte*)(dst.Data); + long step = dst.Step(); - unsafe + // 1bppは手作業でコピー + if (bpp == 1) { - byte* p = (byte*)(dst.Data); - long step = dst.Step(); - - // 1bppは手作業でコピー - if (bpp == 1) + if (submat) + throw new NotImplementedException("submatrix not supported"); + + // BitmapImageのデータを配列にコピー + // 要素1つに横8ピクセル分のデータが入っている。 + int stride = (w / 8) + 1; + byte[] pixels = new byte[h * stride]; + src.CopyPixels(pixels, stride, 0); + int x = 0; + for (int y = 0; y < h; y++) { - if (submat) - throw new NotImplementedException("submatrix not supported"); - - // BitmapImageのデータを配列にコピー - // 要素1つに横8ピクセル分のデータが入っている。 - int stride = (w / 8) + 1; - byte[] pixels = new byte[h * stride]; - src.CopyPixels(pixels, stride, 0); - int x = 0; - for (int y = 0; y < h; y++) + int offset = y * stride; + // この行の各バイトを調べていく + for (int bytePos = 0; bytePos < stride; bytePos++) { - int offset = y * stride; - // この行の各バイトを調べていく - for (int bytePos = 0; bytePos < stride; bytePos++) + if (x < w) { - if (x < w) + // 現在の位置のバイトからそれぞれのビット8つを取り出す + byte b = pixels[offset + bytePos]; + for (int i = 0; i < 8; i++) { - // 現在の位置のバイトからそれぞれのビット8つを取り出す - byte b = pixels[offset + bytePos]; - for (int i = 0; i < 8; i++) + if (x >= w) { - if (x >= w) - { - break; - } - p[step * y + x] = ((b & 0x80) == 0x80) ? (byte)255 : (byte)0; - b <<= 1; - x++; + break; } + p[step * y + x] = ((b & 0x80) == 0x80) ? (byte)255 : (byte)0; + b <<= 1; + x++; } } - // 次の行へ - x = 0; } - + // 次の行へ + x = 0; } - // 8bpp - /*else if (bpp == 8) + + } + // 8bpp + /*else if (bpp == 8) + { + int stride = w; + byte[] pixels = new byte[h * stride]; + src.CopyPixels(pixels, stride, 0); + for (int y = 0; y < h; y++) { - int stride = w; - byte[] pixels = new byte[h * stride]; - src.CopyPixels(pixels, stride, 0); - for (int y = 0; y < h; y++) + for (int x = 0; x < w; x++) { - for (int x = 0; x < w; x++) - { - p[step * y + x] = pixels[y * stride + x]; - } + p[step * y + x] = pixels[y * stride + x]; } - }*/ - // 24bpp, 32bpp, ... + } + }*/ + // 24bpp, 32bpp, ... + else + { + int stride = w * ((bpp + 7) / 8); + if (!submat && continuous) + { + long imageSize = dst.DataEnd.ToInt64() - dst.Data.ToInt64(); + if (imageSize < 0) + throw new OpenCvSharpException("The mat has invalid data pointer"); + if (imageSize > int.MaxValue) + throw new OpenCvSharpException("Too big mat data"); + src.CopyPixels(Int32Rect.Empty, dst.Data, (int)imageSize, stride); + } else { - int stride = w * ((bpp + 7) / 8); - if (!submat && continuous) + // 高さ1pxの矩形ごと(≒1行ごと)にコピー + var roi = new Int32Rect { X = 0, Y = 0, Width = w, Height = 1 }; + IntPtr dstData = dst.Data; + for (int y = 0; y < h; y++) { - long imageSize = dst.DataEnd.ToInt64() - dst.Data.ToInt64(); - if (imageSize < 0) - throw new OpenCvSharpException("The mat has invalid data pointer"); - if (imageSize > int.MaxValue) - throw new OpenCvSharpException("Too big mat data"); - src.CopyPixels(Int32Rect.Empty, dst.Data, (int)imageSize, stride); - } - else - { - // 高さ1pxの矩形ごと(≒1行ごと)にコピー - var roi = new Int32Rect { X = 0, Y = 0, Width = w, Height = 1 }; - IntPtr dstData = dst.Data; - for (int y = 0; y < h; y++) - { - roi.Y = y; - src.CopyPixels(roi, dstData, stride, stride); - dstData = new IntPtr(dstData.ToInt64() + stride); - } + roi.Y = y; + src.CopyPixels(roi, dstData, stride, stride); + dstData = new IntPtr(dstData.ToInt64() + stride); } } - } - } - /// - /// Copies pixel data from System.Windows.Media.Imaging.BitmapSource to IplImage instance - /// - /// - /// - /// - public static void CopyFrom(this Mat mat, BitmapSource wb) - { - if (wb is null) - throw new ArgumentNullException(nameof(wb)); - - ToMat(wb, mat); } + } + + /// + /// Copies pixel data from System.Windows.Media.Imaging.BitmapSource to IplImage instance + /// + /// + /// + /// + public static void CopyFrom(this Mat mat, BitmapSource wb) + { + if (wb is null) + throw new ArgumentNullException(nameof(wb)); - #endregion + ToMat(wb, mat); } + + #endregion } #endif diff --git a/src/OpenCvSharp.WpfExtensions/OpenCvSharp.WpfExtensions.csproj b/src/OpenCvSharp.WpfExtensions/OpenCvSharp.WpfExtensions.csproj index 8ed5e7c9c..0ca10e3e2 100644 --- a/src/OpenCvSharp.WpfExtensions/OpenCvSharp.WpfExtensions.csproj +++ b/src/OpenCvSharp.WpfExtensions/OpenCvSharp.WpfExtensions.csproj @@ -3,20 +3,23 @@ - net48;netcoreapp3.1;net6.0-windows + net48;net6.0-windows true 10 enable https://github.com/shimat/opencvsharp.git git - + AllEnabledByDefault true + + + @@ -39,10 +42,6 @@ - - - - CA1303; diff --git a/src/OpenCvSharp/Cv2/Cv2_imgproc.cs b/src/OpenCvSharp/Cv2/Cv2_imgproc.cs index 387c2dd67..1267afcb4 100644 --- a/src/OpenCvSharp/Cv2/Cv2_imgproc.cs +++ b/src/OpenCvSharp/Cv2/Cv2_imgproc.cs @@ -1773,6 +1773,13 @@ public static void PyrDown(InputArray src, OutputArray dst, dst.Fix(); } + /// + /// + /// + /// + /// + /// + /// public static void BuildPyramid(InputArray src, VectorOfMat dst,int maxlevel, BorderTypes borderType = BorderTypes.Default) { diff --git a/src/OpenCvSharp/Modules/core/Mat/Mat_CvMethods.cs b/src/OpenCvSharp/Modules/core/Mat/Mat_CvMethods.cs index e7518860b..e51e27ede 100644 --- a/src/OpenCvSharp/Modules/core/Mat/Mat_CvMethods.cs +++ b/src/OpenCvSharp/Modules/core/Mat/Mat_CvMethods.cs @@ -1549,17 +1549,20 @@ public Mat PyrUp(Size? dstSize = null, BorderTypes borderType = BorderTypes.Defa Cv2.PyrUp(this, dst, dstSize, borderType); return dst; } + /// /// Upsamples an image and then blurs it. /// + /// /// /// public IEnumerable BuildPyramid(int maxlevel, BorderTypes borderType = BorderTypes.Default) { - var dst = new VectorOfMat(); + using var dst = new VectorOfMat(); Cv2.BuildPyramid(this, dst, maxlevel, borderType); return dst.ToArray(); } + /// /// corrects lens distortion for the given camera matrix and distortion coefficients /// diff --git a/src/OpenCvSharp/Modules/core/Struct/Size.cs b/src/OpenCvSharp/Modules/core/Struct/Size.cs index ca70a0d55..8aad14cfa 100644 --- a/src/OpenCvSharp/Modules/core/Struct/Size.cs +++ b/src/OpenCvSharp/Modules/core/Struct/Size.cs @@ -57,10 +57,8 @@ public Size(double width, double height) /// A Point to compare. /// A Point to compare. /// This operator returns true if the members of left and right are equal; otherwise, false. - public static bool operator ==(Size lhs, Size rhs) - { - return lhs.Equals(rhs); - } + public static bool operator ==(Size lhs, Size rhs) + => lhs.Equals(rhs); /// /// Compares two CvPoint objects. The result specifies whether the members of each object are unequal. @@ -68,20 +66,20 @@ public Size(double width, double height) /// A Point to compare. /// A Point to compare. /// This operator returns true if the members of left and right are unequal; otherwise, false. - public static bool operator !=(Size lhs, Size rhs) - { - return !lhs.Equals(rhs); - } + public static bool operator !=(Size lhs, Size rhs) + => !lhs.Equals(rhs); - public static explicit operator Size(Size2d size) - { - return new(size.Width, size.Height); - } + /// + /// + /// + public static explicit operator Size(Size2d size) + => new(size.Width, size.Height); - public static explicit operator Size(Size2f size) - { - return new(size.Width, size.Height); - } + /// + /// + /// + public static explicit operator Size(Size2f size) + => new(size.Width, size.Height); #endregion diff --git a/src/OpenCvSharp/Modules/core/Struct/Size2d.cs b/src/OpenCvSharp/Modules/core/Struct/Size2d.cs index 7dbd09ab7..5607d4ae7 100644 --- a/src/OpenCvSharp/Modules/core/Struct/Size2d.cs +++ b/src/OpenCvSharp/Modules/core/Struct/Size2d.cs @@ -52,10 +52,7 @@ public Size2d(double width, double height) /// A Point to compare. /// A Point to compare. /// This operator returns true if the members of left and right are equal; otherwise, false. - public static bool operator ==(Size2d lhs, Size2d rhs) - { - return lhs.Equals(rhs); - } + public static bool operator ==(Size2d lhs, Size2d rhs) => lhs.Equals(rhs); /// /// Compares two CvPoint objects. The result specifies whether the members of each object are unequal. @@ -63,36 +60,30 @@ public Size2d(double width, double height) /// A Point to compare. /// A Point to compare. /// This operator returns true if the members of left and right are unequal; otherwise, false. - public static bool operator !=(Size2d lhs, Size2d rhs) - { - return !lhs.Equals(rhs); - } + public static bool operator !=(Size2d lhs, Size2d rhs) + => !lhs.Equals(rhs); - public static implicit operator Size2d(Size size) - { - return new(size.Width, size.Height); - } + /// + /// + /// + public static implicit operator Size2d(Size size) + => new(size.Width, size.Height); - public static implicit operator Size2d(Size2f size) - { - return new(size.Width, size.Height); - } + /// + /// + /// + public static implicit operator Size2d(Size2f size) + => new(size.Width, size.Height); #endregion #region Override /// - public readonly bool Equals(Size2d other) - { - return Width.Equals(other.Width) && Height.Equals(other.Height); - } + public readonly bool Equals(Size2d other) => Width.Equals(other.Width) && Height.Equals(other.Height); /// - public override readonly bool Equals(object? obj) - { - return obj is Size2d other && Equals(other); - } + public override readonly bool Equals(object? obj) => obj is Size2d other && Equals(other); /// public override readonly int GetHashCode() @@ -108,10 +99,7 @@ public override readonly int GetHashCode() } /// - public override readonly string ToString() - { - return $"(width:{Width} height:{Height})"; - } + public override readonly string ToString() => $"(width:{Width} height:{Height})"; #endregion diff --git a/src/OpenCvSharp/Modules/core/Struct/Size2f.cs b/src/OpenCvSharp/Modules/core/Struct/Size2f.cs index c57105137..69309a513 100644 --- a/src/OpenCvSharp/Modules/core/Struct/Size2f.cs +++ b/src/OpenCvSharp/Modules/core/Struct/Size2f.cs @@ -53,10 +53,7 @@ public Size2f(double width, double height) /// A Point to compare. /// A Point to compare. /// This operator returns true if the members of left and right are equal; otherwise, false. - public static bool operator ==(Size2f lhs, Size2f rhs) - { - return lhs.Equals(rhs); - } + public static bool operator ==(Size2f lhs, Size2f rhs) => lhs.Equals(rhs); /// /// Compares two CvPoint objects. The result specifies whether the members of each object are unequal. @@ -64,36 +61,30 @@ public Size2f(double width, double height) /// A Point to compare. /// A Point to compare. /// This operator returns true if the members of left and right are unequal; otherwise, false. - public static bool operator !=(Size2f lhs, Size2f rhs) - { - return !lhs.Equals(rhs); - } + public static bool operator !=(Size2f lhs, Size2f rhs) + => !lhs.Equals(rhs); - public static implicit operator Size2f(Size size) - { - return new(size.Width, size.Height); - } + /// + /// + /// + public static implicit operator Size2f(Size size) + => new(size.Width, size.Height); - public static explicit operator Size2f(Size2d size) - { - return new(size.Width, size.Height); - } + /// + /// + /// + public static explicit operator Size2f(Size2d size) + => new(size.Width, size.Height); #endregion #region Override /// - public readonly bool Equals(Size2f other) - { - return Width.Equals(other.Width) && Height.Equals(other.Height); - } + public readonly bool Equals(Size2f other) => Width.Equals(other.Width) && Height.Equals(other.Height); /// - public override readonly bool Equals(object? obj) - { - return obj is Size2f other && Equals(other); - } + public override readonly bool Equals(object? obj) => obj is Size2f other && Equals(other); /// public override readonly int GetHashCode() @@ -109,10 +100,7 @@ public override readonly int GetHashCode() } /// - public override readonly string ToString() - { - return $"(width:{Width} height:{Height})"; - } + public override readonly string ToString() => $"(width:{Width} height:{Height})"; #endregion } diff --git a/src/OpenCvSharp/OpenCvSharp.csproj b/src/OpenCvSharp/OpenCvSharp.csproj index 1c7f48aea..6d3650df7 100644 --- a/src/OpenCvSharp/OpenCvSharp.csproj +++ b/src/OpenCvSharp/OpenCvSharp.csproj @@ -1,7 +1,7 @@  - netstandard2.0;netstandard2.1;netcoreapp3.1;net48;net6.0; + netstandard2.0;netstandard2.1;net48;net6.0; true true OpenCvSharp @@ -27,7 +27,7 @@ - + diff --git a/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj b/src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj index f6995bec7..d293face1 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\opencv470_win_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_win_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_win_x64\x64\vc16\staticlib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv470_win_x64\x64\vc17\staticlib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\installed\x64-windows-static\lib;$(LibraryPath) - $(SolutionDir)\opencv_files\opencv470_win_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_win_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_win_x86\x86\vc17\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\opencv470_win_x86\x86\vc16\staticlib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_win_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_win_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_win_x64\x64\vc16\staticlib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_win_x64\x64\vc17\staticlib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\x64-windows-static\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_win_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_win_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_win_x86\x86\vc17\staticlib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;$(SolutionDir)\tesseract_files\tesseract_vcpkg\x86-windows-static\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_win_x86\x86\vc16\staticlib;$(LibraryPath) @@ -164,7 +164,7 @@ true - IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libjpeg-turbo.lib;libopenjp2.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco470.lib;opencv_bgsegm470.lib;opencv_bioinspired470.lib;opencv_calib3d470.lib;opencv_ccalib470.lib;opencv_core470.lib;opencv_dnn470.lib;opencv_dnn_superres470.lib;opencv_dnn_objdetect470.lib;opencv_dpm470.lib;opencv_face470.lib;opencv_features2d470.lib;opencv_flann470.lib;opencv_fuzzy470.lib;opencv_hfs470.lib;opencv_highgui470.lib;opencv_imgcodecs470.lib;opencv_imgproc470.lib;opencv_img_hash470.lib;opencv_line_descriptor470.lib;opencv_ml470.lib;opencv_objdetect470.lib;opencv_optflow470.lib;opencv_phase_unwrapping470.lib;opencv_photo470.lib;opencv_plot470.lib;opencv_quality470.lib;opencv_reg470.lib;opencv_rgbd470.lib;opencv_saliency470.lib;opencv_shape470.lib;opencv_stereo470.lib;opencv_stitching470.lib;opencv_structured_light470.lib;opencv_superres470.lib;opencv_surface_matching470.lib;opencv_text470.lib;opencv_tracking470.lib;opencv_video470.lib;opencv_videoio470.lib;opencv_videostab470.lib;opencv_wechat_qrcode470.lib;opencv_xfeatures2d470.lib;opencv_ximgproc470.lib;opencv_xobjdetect470.lib;opencv_xphoto470.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.81.1.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.lib;turbojpeg.lib;webp.lib;webpdecoder.lib;webpdemux.lib;%(AdditionalDependencies) + IlmImf.lib;ippicvmt.lib;ippiw.lib;ittnotify.lib;libjpeg-turbo.lib;libopenjp2.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_aruco480.lib;opencv_bgsegm480.lib;opencv_bioinspired480.lib;opencv_calib3d480.lib;opencv_ccalib480.lib;opencv_core480.lib;opencv_dnn480.lib;opencv_dnn_superres480.lib;opencv_dnn_objdetect480.lib;opencv_dpm480.lib;opencv_face480.lib;opencv_features2d480.lib;opencv_flann480.lib;opencv_fuzzy480.lib;opencv_hfs480.lib;opencv_highgui480.lib;opencv_imgcodecs480.lib;opencv_imgproc480.lib;opencv_img_hash480.lib;opencv_line_descriptor480.lib;opencv_ml480.lib;opencv_objdetect480.lib;opencv_optflow480.lib;opencv_phase_unwrapping480.lib;opencv_photo480.lib;opencv_plot480.lib;opencv_quality480.lib;opencv_reg480.lib;opencv_rgbd480.lib;opencv_saliency480.lib;opencv_shape480.lib;opencv_stereo480.lib;opencv_stitching480.lib;opencv_structured_light480.lib;opencv_superres480.lib;opencv_surface_matching480.lib;opencv_text480.lib;opencv_tracking480.lib;opencv_video480.lib;opencv_videoio480.lib;opencv_videostab480.lib;opencv_wechat_qrcode480.lib;opencv_xfeatures2d480.lib;opencv_ximgproc480.lib;opencv_xobjdetect480.lib;opencv_xphoto480.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract53.lib;leptonica-1.83.1.lib;archive.lib;bz2.lib;charset.lib;gif.lib;iconv.lib;jpeg.lib;libcrypto.lib;libcurl.lib;libpng16.lib;libsharpyuv.lib;libssl.lib;libxml2.lib;lz4.lib;lzma.lib;tiff.lib;turbojpeg.lib;zstd.lib;crypt32.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\opencv470_win_x86\x86\vc17\bin\opencv_videoio_ffmpeg470.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\opencv_videoio_ffmpeg470.dll" -copy "$(SolutionDir)opencv_files\opencv470_win_x86\x86\vc17\bin\opencv_videoio_ffmpeg470.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg470.dll" +copy "$(SolutionDir)opencv_files\opencv480_win_x86\x86\vc17\bin\opencv_videoio_ffmpeg480.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x86\opencv_videoio_ffmpeg480.dll" +copy "$(SolutionDir)opencv_files\opencv480_win_x86\x86\vc17\bin\opencv_videoio_ffmpeg480.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg480.dll" @@ -207,7 +207,7 @@ copy "$(SolutionDir)opencv_files\opencv470_win_x86\x86\vc17\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_aruco470.lib;opencv_bgsegm470.lib;opencv_bioinspired470.lib;opencv_calib3d470.lib;opencv_ccalib470.lib;opencv_core470.lib;opencv_dnn470.lib;opencv_dnn_superres470.lib;opencv_dnn_objdetect470.lib;opencv_dpm470.lib;opencv_face470.lib;opencv_features2d470.lib;opencv_flann470.lib;opencv_fuzzy470.lib;opencv_hfs470.lib;opencv_highgui470.lib;opencv_imgcodecs470.lib;opencv_imgproc470.lib;opencv_img_hash470.lib;opencv_line_descriptor470.lib;opencv_ml470.lib;opencv_objdetect470.lib;opencv_optflow470.lib;opencv_phase_unwrapping470.lib;opencv_photo470.lib;opencv_plot470.lib;opencv_quality470.lib;opencv_reg470.lib;opencv_rgbd470.lib;opencv_saliency470.lib;opencv_shape470.lib;opencv_stereo470.lib;opencv_stitching470.lib;opencv_structured_light470.lib;opencv_superres470.lib;opencv_surface_matching470.lib;opencv_text470.lib;opencv_tracking470.lib;opencv_video470.lib;opencv_videoio470.lib;opencv_videostab470.lib;opencv_wechat_qrcode470.lib;opencv_xfeatures2d470.lib;opencv_ximgproc470.lib;opencv_xobjdetect470.lib;opencv_xphoto470.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract41.lib;leptonica-1.81.1.lib;gif.lib;jpeg.lib;libpng16.lib;libwebpmux.lib;lzma.lib;tiff.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_aruco480.lib;opencv_bgsegm480.lib;opencv_bioinspired480.lib;opencv_calib3d480.lib;opencv_ccalib480.lib;opencv_core480.lib;opencv_dnn480.lib;opencv_dnn_superres480.lib;opencv_dnn_objdetect480.lib;opencv_dpm480.lib;opencv_face480.lib;opencv_features2d480.lib;opencv_flann480.lib;opencv_fuzzy480.lib;opencv_hfs480.lib;opencv_highgui480.lib;opencv_imgcodecs480.lib;opencv_imgproc480.lib;opencv_img_hash480.lib;opencv_line_descriptor480.lib;opencv_ml480.lib;opencv_objdetect480.lib;opencv_optflow480.lib;opencv_phase_unwrapping480.lib;opencv_photo480.lib;opencv_plot480.lib;opencv_quality480.lib;opencv_reg480.lib;opencv_rgbd480.lib;opencv_saliency480.lib;opencv_shape480.lib;opencv_stereo480.lib;opencv_stitching480.lib;opencv_structured_light480.lib;opencv_superres480.lib;opencv_surface_matching480.lib;opencv_text480.lib;opencv_tracking480.lib;opencv_video480.lib;opencv_videoio480.lib;opencv_videostab480.lib;opencv_wechat_qrcode480.lib;opencv_xfeatures2d480.lib;opencv_ximgproc480.lib;opencv_xobjdetect480.lib;opencv_xphoto480.lib;quirc.lib;zlib.lib;ws2_32.lib;tesseract53.lib;leptonica-1.83.1.lib;archive.lib;bz2.lib;charset.lib;gif.lib;iconv.lib;jpeg.lib;libcrypto.lib;libcurl.lib;libpng16.lib;libsharpyuv.lib;libssl.lib;libxml2.lib;lz4.lib;lzma.lib;tiff.lib;turbojpeg.lib;zstd.lib;crypt32.lib;%(AdditionalDependencies) %(IgnoreSpecificDefaultLibraries) true NotSet @@ -222,8 +222,8 @@ copy "$(SolutionDir)opencv_files\opencv470_win_x86\x86\vc17\bin\opencv_videoio_f copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\$(TargetFileName)" copy "$(LocalDebuggerCommand)" "$(SolutionDir)test\OpenCvSharp.Tests\$(TargetFileName)" -copy "$(SolutionDir)opencv_files\opencv470_win_x64\x64\vc17\bin\opencv_videoio_ffmpeg470_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg470_64.dll" -copy "$(SolutionDir)opencv_files\opencv470_win_x64\x64\vc17\bin\opencv_videoio_ffmpeg470_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\opencv_videoio_ffmpeg470_64.dll" +copy "$(SolutionDir)opencv_files\opencv480_win_x64\x64\vc17\bin\opencv_videoio_ffmpeg480_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\opencv_videoio_ffmpeg480_64.dll" +copy "$(SolutionDir)opencv_files\opencv480_win_x64\x64\vc17\bin\opencv_videoio_ffmpeg480_64.dll" "$(SolutionDir)test\OpenCvSharp.Tests\dll\x64\opencv_videoio_ffmpeg480_64.dll" diff --git a/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj b/src/uwpOpenCvSharpExtern/uwpOpenCvSharpExtern.vcxproj index aef65a184..3a1286c38 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\opencv470_uwp_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_uwp_x86\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_uwp_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_uwp_x86\x86\vc16\lib;$(LibraryPath) false $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ $(Platform)\$(Configuration)\ OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv470_uwp_x86\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_uwp_x86\x86\vc17\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_uwp_x86\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_uwp_x86\x86\vc17\lib;$(LibraryPath) false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv470_uwp_ARM\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_uwp_ARM\x86\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_uwp_ARM\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_uwp_ARM\x86\vc16\lib;$(LibraryPath) false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv470_uwp_ARM\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_uwp_ARM\x86\vc17\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_uwp_ARM\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_uwp_ARM\x86\vc17\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv470_uwp_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_uwp_x64\x64\vc16\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_uwp_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_uwp_x64\x64\vc16\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ false OpenCvSharpExtern - $(SolutionDir)\opencv_files\opencv470_uwp_x64\include;$(IncludePath) - $(SolutionDir)\opencv_files\opencv470_uwp_x64\x64\vc17\lib;$(LibraryPath) + $(SolutionDir)\opencv_files\opencv480_uwp_x64\include;$(IncludePath) + $(SolutionDir)\opencv_files\opencv480_uwp_x64\x64\vc17\lib;$(LibraryPath) $(SolutionDir)src\$(Configuration)\$(MSBuildProjectName)\$(Platform)\ @@ -174,7 +174,7 @@ Console false D:\Samples\vcpkg\packages\opencv4_x86-uwp\lib; - opencv_world470.lib;opencv_img_hash470.lib;WindowsApp.lib;%(AdditionalDependencies) + opencv_world480.lib;opencv_img_hash480.lib;WindowsApp.lib;%(AdditionalDependencies) @@ -207,7 +207,7 @@ Console false - opencv_world470.lib;opencv_img_hash470.lib;%(AdditionalDependencies) + opencv_world480.lib;opencv_img_hash480.lib;%(AdditionalDependencies) @@ -240,7 +240,7 @@ Console false - opencv_world470.lib;opencv_img_hash470.lib;WindowsApp.lib;%(AdditionalDependencies) + opencv_world480.lib;opencv_img_hash480.lib;WindowsApp.lib;%(AdditionalDependencies) diff --git a/test/OpenCvSharp.Tests/extensions/BitmapConverterTest.cs b/test/OpenCvSharp.Tests.Windows/BitmapConverterTest.cs similarity index 100% rename from test/OpenCvSharp.Tests/extensions/BitmapConverterTest.cs rename to test/OpenCvSharp.Tests.Windows/BitmapConverterTest.cs diff --git a/test/OpenCvSharp.Tests.Windows/OpenCvSharp.Tests.Windows.csproj b/test/OpenCvSharp.Tests.Windows/OpenCvSharp.Tests.Windows.csproj index 6246030e6..a980fea19 100644 --- a/test/OpenCvSharp.Tests.Windows/OpenCvSharp.Tests.Windows.csproj +++ b/test/OpenCvSharp.Tests.Windows/OpenCvSharp.Tests.Windows.csproj @@ -31,13 +31,7 @@ - - - - - all - runtime; build; native; contentfiles; analyzers - + diff --git a/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj b/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj index bc445fb95..fd5e4d64a 100644 --- a/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj +++ b/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj @@ -1,4 +1,4 @@ - + net6.0;net48 @@ -12,6 +12,7 @@ false 10 enable + enable @@ -36,11 +37,12 @@ - - - - - + + + + + + all runtime; build; native; contentfiles; analyzers diff --git a/test/OpenCvSharp.Tests/TestBase.cs b/test/OpenCvSharp.Tests/TestBase.cs index 1d7271fb0..3c9a8e7fd 100644 --- a/test/OpenCvSharp.Tests/TestBase.cs +++ b/test/OpenCvSharp.Tests/TestBase.cs @@ -1,11 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; +using System.Diagnostics; using System.Net; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; using Xunit; [assembly: CollectionBehavior(/*MaxParallelThreads = 2, */DisableTestParallelization = true)] @@ -17,34 +11,18 @@ namespace OpenCvSharp.Tests; public abstract class TestBase { - private static readonly HttpClient httpClient; - static TestBase() { - ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; - #pragma warning disable CA5364 #pragma warning disable CA5386 + ServicePointManager.ServerCertificateValidationCallback = (_, _, _, _) => true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; #pragma warning restore CA5364 #pragma warning restore CA5386 - -#pragma warning disable CA2000 - var handler = new HttpClientHandler - { - ServerCertificateCustomValidationCallback = delegate { return true; } - }; -#pragma warning restore CA2000 - httpClient = new HttpClient(handler) - { - Timeout = TimeSpan.FromMinutes(5) - }; } - protected static Mat Image(string fileName, ImreadModes modes = ImreadModes.Color) - { - return new Mat(Path.Combine("_data", "image", fileName), modes); - } + protected static Mat LoadImage(string fileName, ImreadModes modes = ImreadModes.Color) + => new(Path.Combine("_data", "image", fileName), modes); protected static void ImageEquals(Mat img1, Mat img2) { diff --git a/test/OpenCvSharp.Tests/aruco/ArucoTest.cs b/test/OpenCvSharp.Tests/aruco/ArucoTest.cs index acd0b46c9..e76deebf6 100644 --- a/test/OpenCvSharp.Tests/aruco/ArucoTest.cs +++ b/test/OpenCvSharp.Tests/aruco/ArucoTest.cs @@ -33,12 +33,12 @@ public void CreateDetectorParameters() Assert.Equal(0.35, param.MaxErroneousBitsInBorderRate, 3); Assert.Equal(5.0, param.MinOtsuStdDev, 3); Assert.Equal(0.6, param.ErrorCorrectionRate, 3); - Assert.Equal(0f, param.AprilTagQuadDecimate, 3); - Assert.Equal(0f, param.AprilTagQuadSigma, 3); + Assert.Equal(0f, param.AprilTagQuadDecimate, 1e-3); + Assert.Equal(0f, param.AprilTagQuadSigma, 1e-3); Assert.Equal(5, param.AprilTagMinClusterPixels); Assert.Equal(10, param.AprilTagMaxNmaxima); - Assert.Equal(0.175f, param.AprilTagCriticalRad, 3); - Assert.Equal(10f, param.AprilTagMaxLineFitMse, 3); + Assert.Equal(0.175f, param.AprilTagCriticalRad, 1e-3); + Assert.Equal(10f, param.AprilTagMaxLineFitMse, 1e-3); Assert.Equal(0, param.AprilTagDeglitch); Assert.Equal(5, param.AprilTagMinWhiteBlackDiff); Assert.False(param.DetectInvertedMarker); @@ -84,7 +84,7 @@ public void ReadDictionaryFromFile() [Fact] public void DetectMarkers() { - using var image = Image("markers_6x6_250.png", ImreadModes.Grayscale); + using var image = LoadImage("markers_6x6_250.png", ImreadModes.Grayscale); using var dict = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict6X6_250); var param = new DetectorParameters(); @@ -109,7 +109,7 @@ public void DictionaryProperties() [Fact] public void DrawDetectedMarker() { - using var image = Image("markers_6x6_250.png", ImreadModes.Grayscale); + using var image = LoadImage("markers_6x6_250.png", ImreadModes.Grayscale); using var outputImage = image.CvtColor(ColorConversionCodes.GRAY2RGB); using var dict = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict6X6_250); var param = new DetectorParameters(); @@ -130,7 +130,7 @@ public void DrawDetectedMarker() [Fact] public void EstimatePoseSingleMarkers() { - using var image = Image("markers_6x6_250.png", ImreadModes.Grayscale); + using var image = LoadImage("markers_6x6_250.png", ImreadModes.Grayscale); using var dict = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict6X6_250); var param = new DetectorParameters(); CvAruco.DetectMarkers(image, dict, out var corners, out _, param, out _); diff --git a/test/OpenCvSharp.Tests/calib3d/Calib3dTest.cs b/test/OpenCvSharp.Tests/calib3d/Calib3dTest.cs index f7c8beb36..e43b4b8e4 100644 --- a/test/OpenCvSharp.Tests/calib3d/Calib3dTest.cs +++ b/test/OpenCvSharp.Tests/calib3d/Calib3dTest.cs @@ -61,8 +61,8 @@ public void CheckChessboard() { var patternSize = new Size(10, 7); - using var image1 = Image("calibration/00.jpg", ImreadModes.Grayscale); - using var image2 = Image("lenna.png", ImreadModes.Grayscale); + using var image1 = LoadImage("calibration/00.jpg", ImreadModes.Grayscale); + using var image2 = LoadImage("lenna.png", ImreadModes.Grayscale); Assert.True(Cv2.CheckChessboard(image1, patternSize)); Assert.False(Cv2.CheckChessboard(image2, patternSize)); } @@ -72,7 +72,7 @@ public void FindChessboardCorners() { var patternSize = new Size(10, 7); - using var image = Image("calibration/00.jpg"); + using var image = LoadImage("calibration/00.jpg"); using var corners = new Mat(); bool found = Cv2.FindChessboardCorners(image, patternSize, corners); @@ -92,7 +92,7 @@ public void FindChessboardCornersSB() { var patternSize = new Size(10, 7); - using var image = Image("calibration/00.jpg"); + using var image = LoadImage("calibration/00.jpg"); using var corners = new Mat(); bool found = Cv2.FindChessboardCornersSB(image, patternSize, corners); @@ -120,7 +120,7 @@ public void CalibrateCameraByArray() { var patternSize = new Size(10, 7); - using var image = Image("calibration/00.jpg"); + using var image = LoadImage("calibration/00.jpg"); using var corners = new Mat(); Cv2.FindChessboardCorners(image, patternSize, corners); @@ -142,7 +142,7 @@ public void CalibrateCameraByMat() { var patternSize = new Size(10, 7); - using var image = Image("calibration/00.jpg"); + using var image = LoadImage("calibration/00.jpg"); using var corners = new Mat(); Cv2.FindChessboardCorners(image, patternSize, corners); @@ -167,7 +167,7 @@ public void FishEyeCalibrate() { var patternSize = new Size(10, 7); - using var image = Image("calibration/00.jpg"); + using var image = LoadImage("calibration/00.jpg"); using var corners = new Mat(); Cv2.FindChessboardCorners(image, patternSize, corners); diff --git a/test/OpenCvSharp.Tests/calib3d/StereoBMTest.cs b/test/OpenCvSharp.Tests/calib3d/StereoBMTest.cs index e581e8484..b77d1de63 100644 --- a/test/OpenCvSharp.Tests/calib3d/StereoBMTest.cs +++ b/test/OpenCvSharp.Tests/calib3d/StereoBMTest.cs @@ -8,8 +8,8 @@ public class StereoBMTest : TestBase [Fact] public void SimpleCompute() { - var left = Image("tsukuba_left.png", ImreadModes.Grayscale); - var right = Image("tsukuba_right.png", ImreadModes.Grayscale); + var left = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + var right = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var sbm = StereoBM.Create(); var disparity = new Mat(); diff --git a/test/OpenCvSharp.Tests/calib3d/StereoSGBMTest.cs b/test/OpenCvSharp.Tests/calib3d/StereoSGBMTest.cs index a246a52c5..f2d4edeed 100644 --- a/test/OpenCvSharp.Tests/calib3d/StereoSGBMTest.cs +++ b/test/OpenCvSharp.Tests/calib3d/StereoSGBMTest.cs @@ -8,8 +8,8 @@ public class StereoSGBMTest : TestBase [Fact] public void SimpleCompute() { - var left = Image("tsukuba_left.png", ImreadModes.Grayscale); - var right = Image("tsukuba_right.png", ImreadModes.Grayscale); + var left = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + var right = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var sbm = StereoSGBM.Create(0, 32, 5); var disparity = new Mat(); diff --git a/test/OpenCvSharp.Tests/core/CoreTest.cs b/test/OpenCvSharp.Tests/core/CoreTest.cs index 79b93cd2b..45456d6bb 100644 --- a/test/OpenCvSharp.Tests/core/CoreTest.cs +++ b/test/OpenCvSharp.Tests/core/CoreTest.cs @@ -61,7 +61,7 @@ public void AddScalar() [Fact] public void Subtract() { - using Mat image = Image("lenna.png"); + using Mat image = LoadImage("lenna.png"); using Mat dst1 = new (); using Mat dst2 = new Scalar(255) - image; Cv2.Subtract(new Scalar(255), image, dst1); @@ -214,7 +214,7 @@ public void CopyMakeBorder() // ReSharper disable once InconsistentNaming public void PSNR() { - using var img1 = Image("lenna.png"); + using var img1 = LoadImage("lenna.png"); using var img2 = new Mat(); Cv2.GaussianBlur(img1, img2, new Size(5, 5), 10); @@ -258,7 +258,7 @@ public void MinMaxIdx() [Fact] public void MergeAndSplit() { - using var img = Image("lenna.png"); + using var img = LoadImage("lenna.png"); Mat[]? planes = null; try @@ -302,7 +302,7 @@ public void Compare() [Fact] public void Rotate() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var img90 = new Mat(); Cv2.Rotate(src, img90, RotateFlags.Rotate90Clockwise); @@ -321,7 +321,7 @@ public void Rotate() [Fact] public void Concat() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var hconcat = new Mat(); using var vconcat = new Mat(); @@ -366,7 +366,7 @@ public void Bitwise() [Fact] public void CopyTo() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); var dst = new Mat(); Cv2.CopyTo(src, dst); diff --git a/test/OpenCvSharp.Tests/core/FileStorageTest.cs b/test/OpenCvSharp.Tests/core/FileStorageTest.cs index 9a9f5c6b7..0279e2e53 100644 --- a/test/OpenCvSharp.Tests/core/FileStorageTest.cs +++ b/test/OpenCvSharp.Tests/core/FileStorageTest.cs @@ -64,7 +64,7 @@ public void ReadAndWrite() using (Mat r = Mat.Eye(3, 3, MatType.CV_64FC1)) using (Mat t = Mat.Ones(3, 1, MatType.CV_64FC1)) - using (Mat lenna = Image("lenna.png")) + using (Mat lenna = LoadImage("lenna.png")) { fs.Write("R", r); fs.Write("T", t); @@ -166,7 +166,7 @@ public void ReadAndWrite() } using (var storedLenna = fs["lenna"]?.ReadMat()) - using (var lenna = Image("lenna.png")) + using (var lenna = LoadImage("lenna.png")) { Assert.NotNull(storedLenna); #pragma warning disable CS8604 @@ -226,7 +226,7 @@ public void ReadAndWriteInMemory() using (Mat r = Mat.Eye(3, 3, MatType.CV_64FC1)) using (Mat t = Mat.Ones(3, 1, MatType.CV_64FC1)) - using (Mat lenna = Image("lenna.png")) + using (Mat lenna = LoadImage("lenna.png")) { fs.Write("R", r); fs.Write("T", t); @@ -334,7 +334,7 @@ public void ReadAndWriteInMemory() } using (var storedLenna = fs["lenna"]?.ReadMat()) - using (var lenna = Image("lenna.png")) + using (var lenna = LoadImage("lenna.png")) { Assert.NotNull(storedLenna); ImageEquals(storedLenna, lenna); diff --git a/test/OpenCvSharp.Tests/core/MatTest.cs b/test/OpenCvSharp.Tests/core/MatTest.cs index 8a1c4b01f..ceadde8b9 100644 --- a/test/OpenCvSharp.Tests/core/MatTest.cs +++ b/test/OpenCvSharp.Tests/core/MatTest.cs @@ -110,9 +110,9 @@ public void GetSet() Assert.Equal(new Vec3b(64, 128, 192), mat8UC3.Get(2, 0)); using var mat32FC1 = new Mat(3, 3, MatType.CV_32FC1, new Scalar(3.14159)); - Assert.Equal(3.14159f, mat32FC1.Get(0, 0), 6); - Assert.Equal(3.14159f, mat32FC1.Get(1, 1), 6); - Assert.Equal(3.14159f, mat32FC1.Get(2, 2), 6); + Assert.Equal(3.14159f, mat32FC1.Get(0, 0), 1e-6); + Assert.Equal(3.14159f, mat32FC1.Get(1, 1), 1e-6); + Assert.Equal(3.14159f, mat32FC1.Get(2, 2), 1e-6); mat32FC1.Set(0, 1, 55.5555f); mat32FC1.Set(1, 2, 55.5555f); mat32FC1.Set(2, 0, 55.5555f); @@ -147,9 +147,9 @@ public void At() Assert.Equal(new Vec3b(7, 8, 9), mat8UC3.At(2, 0)); using var mat32FC1 = new Mat(3, 3, MatType.CV_32FC1, new Scalar(3.14159)); - Assert.Equal(3.14159f, mat32FC1.At(0, 0), 6); - Assert.Equal(3.14159f, mat32FC1.At(1, 1), 6); - Assert.Equal(3.14159f, mat32FC1.At(2, 2), 6); + Assert.Equal(3.14159f, mat32FC1.At(0, 0), 1e-6); + Assert.Equal(3.14159f, mat32FC1.At(1, 1), 1e-6); + Assert.Equal(3.14159f, mat32FC1.At(2, 2), 1e-6); mat32FC1.At(0, 1) = 33.3333f; mat32FC1.At(1, 2) = 44.4444f; mat32FC1.At(2, 0) = 55.5555f; @@ -182,7 +182,7 @@ public void Diag() [Fact] public void CopyTo() { - using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var src = LoadImage("mandrill.png", ImreadModes.Grayscale); using var dst = new Mat(); using var mask = src.GreaterThan(128); src.CopyTo(dst, mask); @@ -194,7 +194,7 @@ public void CopyTo() [Fact] public void SetTo() { - using var graySrc = Image("mandrill.png", ImreadModes.Grayscale); + using var graySrc = LoadImage("mandrill.png", ImreadModes.Grayscale); using var resultImage = graySrc.Clone(); using var mask = graySrc.InRange(100, 200); var ret = resultImage.SetTo(0, mask); @@ -477,8 +477,8 @@ public void MatOfFloatFromArray() var indexer = m.GetIndexer(); for (int i = 0; i < array.Length; i++) { - Assert.Equal(array[i], m.Get(i), 6); - Assert.Equal(array[i], indexer[i], 6); + Assert.Equal(array[i], m.Get(i), 1e-6); + Assert.Equal(array[i], indexer[i], 1e-6); } } @@ -493,8 +493,8 @@ public void MatOfFloatFromRectangularArray() { for (int j = 0; j < array.GetLength(1); j++) { - Assert.Equal(array[i, j], m.Get(i, j), 6); - Assert.Equal(array[i, j], indexer[i, j], 6); + Assert.Equal(array[i, j], m.Get(i, j), 1e-6); + Assert.Equal(array[i, j], indexer[i, j], 1e-6); } } } @@ -1085,7 +1085,7 @@ public void RowMat() [Fact] public void RowMatCopyTo() { - using var lenna = Image("lenna.png", ImreadModes.Grayscale); + using var lenna = LoadImage("lenna.png", ImreadModes.Grayscale); using var mat = new Mat(lenna.Rows, lenna.Cols, MatType.CV_8UC1, Scalar.All(0)); using var lenna10 = lenna.Row(10); diff --git a/test/OpenCvSharp.Tests/core/RotatedRectTest.cs b/test/OpenCvSharp.Tests/core/RotatedRectTest.cs index 8a1e05c11..a2943a3fd 100644 --- a/test/OpenCvSharp.Tests/core/RotatedRectTest.cs +++ b/test/OpenCvSharp.Tests/core/RotatedRectTest.cs @@ -21,11 +21,11 @@ public void FromThreeVertexPoints() var rt2Native = RotatedRect.FromThreeVertexPoints(p[0], p[1], p[2]); // same as native result - Assert.Equal(rt2.Angle, rt2Native.Angle, 4); - Assert.Equal(rt2.Center.X, rt2Native.Center.X, 4); - Assert.Equal(rt2.Center.Y, rt2Native.Center.Y, 4); - Assert.Equal(rt2.Size.Width, rt2Native.Size.Width, 4); - Assert.Equal(rt2.Size.Height, rt2Native.Size.Height, 4); + Assert.Equal(rt2.Angle, rt2Native.Angle, 1e-4); + Assert.Equal(rt2.Center.X, rt2Native.Center.X, 1e-4); + Assert.Equal(rt2.Center.Y, rt2Native.Center.Y, 1e-4); + Assert.Equal(rt2.Size.Width, rt2Native.Size.Width, 1e-4); + Assert.Equal(rt2.Size.Height, rt2Native.Size.Height, 1e-4); const double tolerance = 0.0001; var angleDiff = Math.Abs(rt2.Angle - rt1.Angle) % 90; diff --git a/test/OpenCvSharp.Tests/core/SizeTest.cs b/test/OpenCvSharp.Tests/core/SizeTest.cs index eb45a3f9a..572f01093 100644 --- a/test/OpenCvSharp.Tests/core/SizeTest.cs +++ b/test/OpenCvSharp.Tests/core/SizeTest.cs @@ -12,7 +12,7 @@ public void Size2f() Assert.Equal(0.5, obj.Height, 6); obj = new Size2f(0.5f, 0.5f); - Assert.Equal(0.5f, obj.Width, 6); - Assert.Equal(0.5f, obj.Height, 6); + Assert.Equal(0.5f, obj.Width, 1e-6); + Assert.Equal(0.5f, obj.Height, 1e-6); } } diff --git a/test/OpenCvSharp.Tests/core/UtilityTest.cs b/test/OpenCvSharp.Tests/core/UtilityTest.cs index ba2c56cc8..7271e13c7 100644 --- a/test/OpenCvSharp.Tests/core/UtilityTest.cs +++ b/test/OpenCvSharp.Tests/core/UtilityTest.cs @@ -1,5 +1,4 @@ -using System; -using Xunit; +using Xunit; using Xunit.Abstractions; namespace OpenCvSharp.Tests.Core; @@ -20,7 +19,7 @@ public void GetAndSetNumThreads() // https://docs.opencv.org/3.4/db/de0/group__core__utils.html#gae78625c3c2aa9e0b83ed31b73c6549c0 if(!System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.OSX)) { - int threads = Cv2.GetNumThreads(); + var threads = Cv2.GetNumThreads(); Cv2.SetNumThreads(threads + 1); Assert.Equal(threads + 1, Cv2.GetNumThreads()); @@ -31,10 +30,7 @@ public void GetAndSetNumThreads() } [Fact] - public void GetThreadNum() - { - testOutputHelper.WriteLine("GetThreadNum: {0}", Cv2.GetThreadNum()); - } + public void GetThreadNum() => testOutputHelper.WriteLine("GetThreadNum: {0}", Cv2.GetThreadNum()); [Fact] public void GetBuildInformation() @@ -46,45 +42,35 @@ public void GetBuildInformation() [Fact] public void GetVersionString() { - Assert.NotEmpty(Cv2.GetVersionString()); - testOutputHelper.WriteLine("GetVersionString: {0}", Cv2.GetVersionString()); + var v = Cv2.GetVersionString(); + Assert.NotNull(v); + Assert.NotEmpty(v); + testOutputHelper.WriteLine("GetVersionString: {0}", v); } [Fact] - public void GetVersionMajor() - { - testOutputHelper.WriteLine("GetVersionMajor: {0}", Cv2.GetVersionMajor()); - } + public void GetVersionMajor() + => testOutputHelper.WriteLine("GetVersionMajor: {0}", Cv2.GetVersionMajor()); [Fact] - public void GetVersionMinor() - { - testOutputHelper.WriteLine("GetVersionMinor: {0}", Cv2.GetVersionMinor()); - } + public void GetVersionMinor() + => testOutputHelper.WriteLine("GetVersionMinor: {0}", Cv2.GetVersionMinor()); [Fact] - public void GetVersionRevision() - { - testOutputHelper.WriteLine("GetVersionRevision: {0}", Cv2.GetVersionRevision()); - } + public void GetVersionRevision() + => testOutputHelper.WriteLine("GetVersionRevision: {0}", Cv2.GetVersionRevision()); [Fact] - public void GetTickCount() - { - testOutputHelper.WriteLine("GetTickCount: {0}", Cv2.GetTickCount()); - } + public void GetTickCount() + => testOutputHelper.WriteLine("GetTickCount: {0}", Cv2.GetTickCount()); [Fact] - public void GetTickFrequency() - { - testOutputHelper.WriteLine("GetTickFrequency: {0}", Cv2.GetTickFrequency()); - } + public void GetTickFrequency() + => testOutputHelper.WriteLine("GetTickFrequency: {0}", Cv2.GetTickFrequency()); [Fact] - public void GetCpuTickCount() - { - testOutputHelper.WriteLine("GetCpuTickCount: {0}", Cv2.GetCpuTickCount()); - } + public void GetCpuTickCount() + => testOutputHelper.WriteLine("GetCpuTickCount: {0}", Cv2.GetCpuTickCount()); [Fact] public void CheckHardwareSupport() @@ -98,10 +84,7 @@ public void CheckHardwareSupport() } [Fact] - public void GetHardwareFeatureName() - { - testOutputHelper.WriteLine(Cv2.GetHardwareFeatureName(0)); - } + public void GetHardwareFeatureName() => testOutputHelper.WriteLine(Cv2.GetHardwareFeatureName(0)); [Fact] public void GetCpuFeaturesLine() @@ -112,10 +95,7 @@ public void GetCpuFeaturesLine() [Fact] // ReSharper disable once IdentifierTypo - public void GetNumberOfCpus() - { - Assert.True(1 <= Cv2.GetNumberOfCpus()); - } + public void GetNumberOfCpus() => Assert.True(1 <= Cv2.GetNumberOfCpus()); [Theory] [InlineData(FormatType.Default)] diff --git a/test/OpenCvSharp.Tests/dnn/CaffeTest.cs b/test/OpenCvSharp.Tests/dnn/CaffeTest.cs index 599489406..56c4efb1c 100644 --- a/test/OpenCvSharp.Tests/dnn/CaffeTest.cs +++ b/test/OpenCvSharp.Tests/dnn/CaffeTest.cs @@ -35,7 +35,7 @@ public void LoadCaffeModel() Assert.Equal(1, net.GetLayerId(layerName!)); // Convert Mat to batch of images - using var img = Image(@"space_shuttle.jpg"); + using var img = LoadImage(@"space_shuttle.jpg"); using var inputBlob = CvDnn.BlobFromImage(img, 1, new Size(224, 224), new Scalar(104, 117, 123)); net.SetInput(inputBlob, "data"); using var prob = net.Forward("prob"); diff --git a/test/OpenCvSharp.Tests/dnn/TensorflowTest.cs b/test/OpenCvSharp.Tests/dnn/TensorflowTest.cs index 2bbd9cc87..4cf0eca14 100644 --- a/test/OpenCvSharp.Tests/dnn/TensorflowTest.cs +++ b/test/OpenCvSharp.Tests/dnn/TensorflowTest.cs @@ -15,7 +15,7 @@ public class TensorflowTest : TestBase // ReSharper disable once IdentifierTypo public void LoadMnistTrainingDataFromFile_NetRecognizesAnImageOfA9Correctly() { - using var imgOf9 = Image(Path.Combine("Dnn","MNIST_9.png"), ImreadModes.Grayscale); + using var imgOf9 = LoadImage(Path.Combine("Dnn","MNIST_9.png"), ImreadModes.Grayscale); var img9DataBlob = CvDnn.BlobFromImage(imgOf9, 1f / 255.0f); var modelPath = Path.Combine("_data", "model", "MNISTTest_tensorflow.pb"); @@ -37,7 +37,7 @@ public void LoadMnistTrainingDataFromFile_NetRecognizesAnImageOfA9Correctly() // ReSharper disable once IdentifierTypo public void LoadMnistTrainingDataFromStream_NetRecognizesAnImageOfA5Correctly() { - using var imgOf5 = Image(Path.Combine("Dnn", "MNIST_5.png"), ImreadModes.Grayscale); + using var imgOf5 = LoadImage(Path.Combine("Dnn", "MNIST_5.png"), ImreadModes.Grayscale); var img5DataBlob = CvDnn.BlobFromImage(imgOf5, 1f / 255.0f); var modelPath = Path.Combine("_data", "model", "MNISTTest_tensorflow.pb"); diff --git a/test/OpenCvSharp.Tests/dnn/YoloTest.cs b/test/OpenCvSharp.Tests/dnn/YoloTest.cs index 839ca5891..b5459247c 100644 --- a/test/OpenCvSharp.Tests/dnn/YoloTest.cs +++ b/test/OpenCvSharp.Tests/dnn/YoloTest.cs @@ -40,7 +40,7 @@ public void LoadYoloV2Model() Assert.False(net!.Empty()); // Convert Mat to batch of images - using var img = Image(@"space_shuttle.jpg"); + using var img = LoadImage(@"space_shuttle.jpg"); using var inputBlob = CvDnn.BlobFromImage(img, 1, new Size(224, 224), new Scalar(104, 117, 123)); // Set input blob net.SetInput(inputBlob, "data"); @@ -70,7 +70,7 @@ public void LoadYoloV3Model() RunGC(); using (var net = CvDnn.ReadNetFromDarknet(cfgFile, darknetModel)) - using (var img = Image(@"space_shuttle.jpg")) + using (var img = LoadImage(@"space_shuttle.jpg")) { Assert.NotNull(net); Assert.False(net!.Empty()); diff --git a/test/OpenCvSharp.Tests/face/FacemarkAAMTest.cs b/test/OpenCvSharp.Tests/face/FacemarkAAMTest.cs index 316c59ac4..9a9560c78 100644 --- a/test/OpenCvSharp.Tests/face/FacemarkAAMTest.cs +++ b/test/OpenCvSharp.Tests/face/FacemarkAAMTest.cs @@ -41,7 +41,7 @@ public void GetFaces() parameter.Scales = new float[] {2, 4}; using (var facemark = FacemarkAAM.Create(parameter)) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) { bool ret = facemark.GetFaces(img, out var faces); Assert.True(ret); diff --git a/test/OpenCvSharp.Tests/face/LBPHFaceRecognizerTest.cs b/test/OpenCvSharp.Tests/face/LBPHFaceRecognizerTest.cs index e96866f47..770eb62b9 100644 --- a/test/OpenCvSharp.Tests/face/LBPHFaceRecognizerTest.cs +++ b/test/OpenCvSharp.Tests/face/LBPHFaceRecognizerTest.cs @@ -25,7 +25,7 @@ public void CreateAndDispose() [Fact] public void TrainAndPredict() { - using var image = Image("lenna.png"); + using var image = LoadImage("lenna.png"); using var grayImage = image.CvtColor(ColorConversionCodes.BGR2GRAY); using var model = LBPHFaceRecognizer.Create(); using var cascade = new CascadeClassifier("_data/text/haarcascade_frontalface_default.xml"); diff --git a/test/OpenCvSharp.Tests/features2d/BOWImgDescriptorExtractorTest.cs b/test/OpenCvSharp.Tests/features2d/BOWImgDescriptorExtractorTest.cs index e371a4c18..8a44fb602 100644 --- a/test/OpenCvSharp.Tests/features2d/BOWImgDescriptorExtractorTest.cs +++ b/test/OpenCvSharp.Tests/features2d/BOWImgDescriptorExtractorTest.cs @@ -80,7 +80,7 @@ public void RunTest() { using var descriptorExtractor = SIFT.Create(500); using var descriptorMatcher = new BFMatcher(); - using var img = Image("lenna.png"); + using var img = LoadImage("lenna.png"); KeyPoint[] keypoints; Mat dictionary; var tc = new TermCriteria(CriteriaTypes.MaxIter, 100, 0.001d); diff --git a/test/OpenCvSharp.Tests/features2d/FastFeatureDetectorTest.cs b/test/OpenCvSharp.Tests/features2d/FastFeatureDetectorTest.cs index a381d0353..161aaa19b 100644 --- a/test/OpenCvSharp.Tests/features2d/FastFeatureDetectorTest.cs +++ b/test/OpenCvSharp.Tests/features2d/FastFeatureDetectorTest.cs @@ -24,7 +24,7 @@ public void CreateAndDispose() public void Detect() { KeyPoint[] keyPoints; - using (var gray = Image("lenna.png", 0)) + using (var gray = LoadImage("lenna.png", 0)) using (var orb = FastFeatureDetector.Create()) keyPoints = orb.Detect(gray); diff --git a/test/OpenCvSharp.Tests/features2d/FlannBasedMatcherTest.cs b/test/OpenCvSharp.Tests/features2d/FlannBasedMatcherTest.cs index a0c191a81..abaaa4367 100644 --- a/test/OpenCvSharp.Tests/features2d/FlannBasedMatcherTest.cs +++ b/test/OpenCvSharp.Tests/features2d/FlannBasedMatcherTest.cs @@ -9,8 +9,8 @@ public class FlannBasedMatcherTest : TestBase [Fact] public void Mathing() { - using var img1 = Image("tsukuba_left.png", ImreadModes.Grayscale); - using var img2 = Image("tsukuba_right.png", ImreadModes.Grayscale); + using var img1 = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + using var img2 = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var orb = ORB.Create(500); using var descriptor1 = new Mat(); using var descriptor2 = new Mat(); @@ -41,8 +41,8 @@ public void Mathing() [Fact] public void MathingWithKDTreeIndexParams() { - using var img1 = Image("tsukuba_left.png", ImreadModes.Grayscale); - using var img2 = Image("tsukuba_right.png", ImreadModes.Grayscale); + using var img1 = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + using var img2 = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var orb = ORB.Create(500); using var descriptor1 = new Mat(); using var descriptor2 = new Mat(); @@ -75,8 +75,8 @@ public void MathingWithKDTreeIndexParams() [Fact] public void MathingWithLshIndexParams() { - using var img1 = Image("tsukuba_left.png", ImreadModes.Grayscale); - using var img2 = Image("tsukuba_right.png", ImreadModes.Grayscale); + using var img1 = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + using var img2 = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var orb = ORB.Create(500); using var descriptor1 = new Mat(); using var descriptor2 = new Mat(); diff --git a/test/OpenCvSharp.Tests/features2d/ORBTest.cs b/test/OpenCvSharp.Tests/features2d/ORBTest.cs index ee24d60e1..c325c5fb7 100644 --- a/test/OpenCvSharp.Tests/features2d/ORBTest.cs +++ b/test/OpenCvSharp.Tests/features2d/ORBTest.cs @@ -24,7 +24,7 @@ public void CreateAndDispose() public void Detect() { // This parameter should introduce same result of http://opencv.jp/wordpress/wp-content/uploads/lenna_SURF-150x150.png - using var gray = Image("lenna.png", 0); + using var gray = LoadImage("lenna.png", 0); using var orb = ORB.Create(500); var keyPoints = orb.Detect(gray); @@ -34,7 +34,7 @@ public void Detect() [Fact] public void DetectAndCompute() { - using (var gray = Image("lenna.png", ImreadModes.Grayscale)) + using (var gray = LoadImage("lenna.png", ImreadModes.Grayscale)) using (var orb = ORB.Create(500)) using (Mat descriptor = new Mat()) { diff --git a/test/OpenCvSharp.Tests/features2d/SIFTTest.cs b/test/OpenCvSharp.Tests/features2d/SIFTTest.cs index 67c3388a8..ff0d264f2 100644 --- a/test/OpenCvSharp.Tests/features2d/SIFTTest.cs +++ b/test/OpenCvSharp.Tests/features2d/SIFTTest.cs @@ -26,7 +26,7 @@ public void CreateAndDispose() public void Detect() { KeyPoint[] keyPoints; - using (var gray = Image("lenna.png", 0)) + using (var gray = LoadImage("lenna.png", 0)) using (var alg = SIFT.Create(500)) keyPoints = alg.Detect(gray); diff --git a/test/OpenCvSharp.Tests/highgui/TrackbarTest.cs b/test/OpenCvSharp.Tests/highgui/TrackbarTest.cs index b95750632..b0815dd21 100644 --- a/test/OpenCvSharp.Tests/highgui/TrackbarTest.cs +++ b/test/OpenCvSharp.Tests/highgui/TrackbarTest.cs @@ -11,7 +11,7 @@ public class TrackbarTest : TestBase //[Apartment(ApartmentState.STA)] public void RunTest() { - using var src = Image(@"lenna.png", ImreadModes.AnyDepth | ImreadModes.AnyColor); + using var src = LoadImage(@"lenna.png", ImreadModes.AnyDepth | ImreadModes.AnyColor); using var dst = new Mat(); src.CopyTo(dst); diff --git a/test/OpenCvSharp.Tests/img_hash/AverageHashTest.cs b/test/OpenCvSharp.Tests/img_hash/AverageHashTest.cs index 918c02981..7ccae1456 100644 --- a/test/OpenCvSharp.Tests/img_hash/AverageHashTest.cs +++ b/test/OpenCvSharp.Tests/img_hash/AverageHashTest.cs @@ -19,7 +19,7 @@ public void CreateAndDispose() public void Compute() { using (var model = AverageHash.Create()) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -43,7 +43,7 @@ public void Compute() public void CompareSameImage() { using (var model = AverageHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) { double hash = model.Compare(img1, img1); Assert.Equal(0, hash, 6); @@ -54,8 +54,8 @@ public void CompareSameImage() public void CompareDifferentImage() { using (var model = AverageHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) - using (var img2 = Image("building.jpg", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) + using (var img2 = LoadImage("building.jpg", ImreadModes.Grayscale)) { var size = new Size(256, 256); using (var scaledImg1 = img1.Resize(size)) diff --git a/test/OpenCvSharp.Tests/img_hash/BlockMeanHashTest.cs b/test/OpenCvSharp.Tests/img_hash/BlockMeanHashTest.cs index 42b435728..e3f3c1542 100644 --- a/test/OpenCvSharp.Tests/img_hash/BlockMeanHashTest.cs +++ b/test/OpenCvSharp.Tests/img_hash/BlockMeanHashTest.cs @@ -23,7 +23,7 @@ public void CreateAndDispose() public void ComputeMode0() { using (var model = BlockMeanHash.Create(BlockMeanHashMode.Mode0)) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -42,7 +42,7 @@ public void ComputeMode0() public void ComputeMode1() { using (var model = BlockMeanHash.Create(BlockMeanHashMode.Mode1)) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -71,7 +71,7 @@ public void ComputeMode1() public void CompareSameImage(BlockMeanHashMode mode) { using (var model = BlockMeanHash.Create(mode)) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) { double hash = model.Compare(img1, img1); Assert.Equal(0, hash, 6); @@ -84,8 +84,8 @@ public void CompareSameImage(BlockMeanHashMode mode) public void CompareDifferentImage(BlockMeanHashMode mode) { using (var model = BlockMeanHash.Create(mode)) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) - using (var img2 = Image("building.jpg", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) + using (var img2 = LoadImage("building.jpg", ImreadModes.Grayscale)) { var size = new Size(256, 256); using (var scaledImg1 = img1.Resize(size)) diff --git a/test/OpenCvSharp.Tests/img_hash/ColorMomentHashTest.cs b/test/OpenCvSharp.Tests/img_hash/ColorMomentHashTest.cs index 0efe52470..209656de2 100644 --- a/test/OpenCvSharp.Tests/img_hash/ColorMomentHashTest.cs +++ b/test/OpenCvSharp.Tests/img_hash/ColorMomentHashTest.cs @@ -19,7 +19,7 @@ public void CreateAndDispose() public void Compute() { using (var model = ColorMomentHash.Create()) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -51,7 +51,7 @@ public void Compute() public void CompareSameImage() { using (var model = ColorMomentHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) { double hash = model.Compare(img1, img1); Assert.Equal(0, hash, 6); @@ -62,8 +62,8 @@ public void CompareSameImage() public void CompareDifferentImage() { using (var model = ColorMomentHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) - using (var img2 = Image("building.jpg", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) + using (var img2 = LoadImage("building.jpg", ImreadModes.Grayscale)) { var size = new Size(256, 256); using (var scaledImg1 = img1.Resize(size)) diff --git a/test/OpenCvSharp.Tests/img_hash/MarrHildrethHashTest.cs b/test/OpenCvSharp.Tests/img_hash/MarrHildrethHashTest.cs index 1bd96cc3d..a91c5a551 100644 --- a/test/OpenCvSharp.Tests/img_hash/MarrHildrethHashTest.cs +++ b/test/OpenCvSharp.Tests/img_hash/MarrHildrethHashTest.cs @@ -19,7 +19,7 @@ public void CreateAndDispose() public void Compute() { using (var model = MarrHildrethHash.Create()) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -40,7 +40,7 @@ public void Compute() public void CompareSameImage() { using (var model = MarrHildrethHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) { double hash = model.Compare(img1, img1); Assert.Equal(0, hash, 6); @@ -51,8 +51,8 @@ public void CompareSameImage() public void CompareDifferentImage() { using (var model = MarrHildrethHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) - using (var img2 = Image("building.jpg", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) + using (var img2 = LoadImage("building.jpg", ImreadModes.Grayscale)) { var size = new Size(256, 256); using (var scaledImg1 = img1.Resize(size)) diff --git a/test/OpenCvSharp.Tests/img_hash/PHashTest.cs b/test/OpenCvSharp.Tests/img_hash/PHashTest.cs index 05ac3af21..ca712755c 100644 --- a/test/OpenCvSharp.Tests/img_hash/PHashTest.cs +++ b/test/OpenCvSharp.Tests/img_hash/PHashTest.cs @@ -19,7 +19,7 @@ public void CreateAndDispose() public void Compute() { using (var model = PHash.Create()) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -43,7 +43,7 @@ public void Compute() public void CompareSameImage() { using (var model = PHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) { double hash = model.Compare(img1, img1); Assert.Equal(0, hash, 6); @@ -54,8 +54,8 @@ public void CompareSameImage() public void CompareDifferentImage() { using (var model = PHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) - using (var img2 = Image("building.jpg", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) + using (var img2 = LoadImage("building.jpg", ImreadModes.Grayscale)) { var size = new Size(256, 256); using (var scaledImg1 = img1.Resize(size)) diff --git a/test/OpenCvSharp.Tests/img_hash/RadialVarianceHashTest.cs b/test/OpenCvSharp.Tests/img_hash/RadialVarianceHashTest.cs index f49961c37..fd15497bb 100644 --- a/test/OpenCvSharp.Tests/img_hash/RadialVarianceHashTest.cs +++ b/test/OpenCvSharp.Tests/img_hash/RadialVarianceHashTest.cs @@ -19,7 +19,7 @@ public void CreateAndDispose() public void Compute() { using (var model = RadialVarianceHash.Create()) - using (var img = Image("lenna.png")) + using (var img = LoadImage("lenna.png")) using (var hash = new Mat()) { model.Compute(img, hash); @@ -39,7 +39,7 @@ public void Compute() public void CompareSameImage() { using (var model = RadialVarianceHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) { var size = new Size(40, 40); using (var scaledImg1 = img1.Resize(size)) @@ -55,8 +55,8 @@ public void CompareSameImage() public void CompareDifferentImage() { using (var model = RadialVarianceHash.Create()) - using (var img1 = Image("lenna.png", ImreadModes.Grayscale)) - using (var img2 = Image("building.jpg", ImreadModes.Grayscale)) + using (var img1 = LoadImage("lenna.png", ImreadModes.Grayscale)) + using (var img2 = LoadImage("building.jpg", ImreadModes.Grayscale)) { var size = new Size(40, 40); using (var scaledImg1 = img1.Resize(size)) diff --git a/test/OpenCvSharp.Tests/imgcodecs/ImgCodecsTest.cs b/test/OpenCvSharp.Tests/imgcodecs/ImgCodecsTest.cs index c727aae82..020c83713 100644 --- a/test/OpenCvSharp.Tests/imgcodecs/ImgCodecsTest.cs +++ b/test/OpenCvSharp.Tests/imgcodecs/ImgCodecsTest.cs @@ -1,15 +1,17 @@ -#nullable enable -using System; -using System.Drawing; -using System.Drawing.Imaging; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime.InteropServices; -using System.Threading; +using System.Runtime.InteropServices; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Drawing.Processing; +using SixLabors.ImageSharp.Formats; +using SixLabors.ImageSharp.Formats.Bmp; +using SixLabors.ImageSharp.Formats.Jpeg; +using SixLabors.ImageSharp.Formats.Png; +using SixLabors.ImageSharp.Formats.Tiff; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; using Xunit; using Xunit.Abstractions; +using Color = SixLabors.ImageSharp.Color; +using Image = SixLabors.ImageSharp.Image; #pragma warning disable CA1031 @@ -23,22 +25,23 @@ public ImgCodecsTest(ITestOutputHelper testOutputHelper) { this.testOutputHelper = testOutputHelper; } - + [Theory] [InlineData("building.jpg")] [InlineData("lenna.png")] [InlineData("building_mask.bmp")] public void ImReadSuccess(string fileName) { - using (var image = Image(fileName, ImreadModes.Grayscale)) + using (var image = LoadImage(fileName, ImreadModes.Grayscale)) { Assert.False(image.Empty()); } - using (var image = Image(fileName, ImreadModes.Color)) + // ReSharper disable once RedundantArgumentDefaultValue + using (var image = LoadImage(fileName, ImreadModes.Color)) { Assert.False(image.Empty()); } - using (var image = Image(fileName, ImreadModes.AnyColor | ImreadModes.AnyDepth)) + using (var image = LoadImage(fileName, ImreadModes.AnyColor | ImreadModes.AnyDepth)) { Assert.False(image.Empty()); } @@ -79,17 +82,19 @@ public void ImReadJapaneseFileName() // Create test data { - using var bitmap = new Bitmap(10, 10, PixelFormat.Format24bppRgb); - using var graphics = Graphics.FromImage(bitmap); - graphics.Clear(Color.Red); - bitmap.Save(fileName, ImageFormat.Png); + using var image = new Image(10, 10); + image.Mutate(x => + { + x.Fill(Color.Red); + }); + image.SaveAsPng(fileName); } Assert.True(File.Exists(fileName), $"File '{fileName}' not found"); - using var image = Cv2.ImRead(fileName, ImreadModes.Color); - Assert.NotNull(image); - Assert.False(image.Empty()); + using var mat = Cv2.ImRead(fileName); + Assert.NotNull(mat); + Assert.False(mat.Empty()); } // TODO Windows not supported? @@ -109,14 +114,14 @@ public void ImReadUnicodeFileName() // at System.Runtime.InteropServices.Marshal.StringToAnsiString(String s, Byte * buffer, Int32 bufferLength, Boolean bestFit, Boolean throwOnUnmappableChar) Assert.Throws(() => { - using var image = Cv2.ImRead(fileName, ImreadModes.Color); + using var image = Cv2.ImRead(fileName); //Assert.NotNull(image); //Assert.False(image.Empty()); }); } else { - using var image = Cv2.ImRead(fileName, ImreadModes.Color); + using var image = Cv2.ImRead(fileName); Assert.NotNull(image); Assert.False(image.Empty()); } @@ -129,16 +134,16 @@ public void ImReadUnicodeFileName() [InlineData(".tif")] public void ImWrite(string ext) { - string fileName = $"test_imwrite{ext}"; + var fileName = $"test_imwrite{ext}"; using (var mat = new Mat(10, 20, MatType.CV_8UC3, Scalar.Blue)) { Cv2.ImWrite(fileName, mat); } - using var bitmap = new Bitmap(fileName); - Assert.Equal(10, bitmap.Height); - Assert.Equal(20, bitmap.Width); + var imageInfo = Image.Identify(fileName); + Assert.Equal(10, imageInfo.Height); + Assert.Equal(20, imageInfo.Width); } //[LinuxOnlyFact] @@ -163,9 +168,9 @@ public void ImWriteJapaneseFileName() Assert.True(File.Exists(fileName), $"File '{fileName}' not found"); - using var bitmap = new Bitmap(fileName); - Assert.Equal(10, bitmap.Height); - Assert.Equal(20, bitmap.Width); + var imageInfo = Image.Identify(fileName); + Assert.Equal(10, imageInfo.Height); + Assert.Equal(20, imageInfo.Width); } // TODO @@ -187,10 +192,7 @@ public void ImWriteUnicodeFileName() // TODO // Cannot marshal: Encountered unmappable character. // at System.Runtime.InteropServices.Marshal.StringToAnsiString(String s, Byte * buffer, Int32 bufferLength, Boolean bestFit, Boolean throwOnUnmappableChar) - Assert.Throws(() => - { - Cv2.ImWrite(fileName, mat); - }); + Assert.Throws(() => { Cv2.ImWrite(fileName, mat); }); return; } else @@ -198,19 +200,17 @@ public void ImWriteUnicodeFileName() Cv2.ImWrite(fileName, mat); } } - - // TODO fail + var file = new FileInfo(fileName); Assert.True(file.Exists, $"File '{fileName}' not found"); Assert.True(file.Length > 0, $"File size of '{fileName}' == 0"); const string asciiFileName = "_data/image/imwrite_unicode_test.png"; File.Move(fileName, asciiFileName); - using (var bitmap = new Bitmap(asciiFileName)) - { - Assert.Equal(10, bitmap.Height); - Assert.Equal(20, bitmap.Width); - } + var imageInfo = Image.Identify(asciiFileName); + + Assert.Equal(10, imageInfo.Height); + Assert.Equal(20, imageInfo.Width); } // TODO AccessViolationException @@ -320,10 +320,8 @@ public void HaveImageReaderUnicode() [InlineData("foo.png")] [InlineData("bar.jpg")] [InlineData("baz.bmp")] - public void HaveImageWriter(string fileName) - { - Assert.True(Cv2.HaveImageWriter(fileName)); - } + public void HaveImageWriter(string fileName) + => Assert.True(Cv2.HaveImageWriter(fileName)); // TODO [Fact(Skip = "AccessViolationException")] @@ -374,17 +372,16 @@ public void HaveImageWriterUnicode() [InlineData(".bmp")] public void ImEncode(string ext) { - using var mat = Image("lenna.png", ImreadModes.Grayscale); + using var mat = LoadImage("lenna.png", ImreadModes.Grayscale); Assert.False(mat.Empty()); Cv2.ImEncode(ext, mat, out var imageData); Assert.NotNull(imageData); - // Can System.Drawing.Bitmap decode the imageData? - using var stream = new MemoryStream(imageData); - using var bitmap = new Bitmap(stream); - Assert.Equal(mat.Rows, bitmap.Height); - Assert.Equal(mat.Cols, bitmap.Width); + // Can ImageSharp decode the imageData? + using var image = Image.Load(imageData); + Assert.Equal(mat.Rows, image.Height); + Assert.Equal(mat.Cols, image.Width); } [Theory] @@ -394,23 +391,26 @@ public void ImEncode(string ext) [InlineData("Bmp")] public void ImDecode(string imageFormatName) { - var imageFormatProperty = - typeof(ImageFormat).GetProperty(imageFormatName, BindingFlags.Public | BindingFlags.Static); - Assert.NotNull(imageFormatProperty); - var imageFormat = imageFormatProperty!.GetValue(null) as ImageFormat; - Assert.NotNull(imageFormat); + IImageEncoder encoder = imageFormatName switch + { + "Png" => new PngEncoder(), + "Jpeg" => new JpegEncoder(), + "Tiff" => new TiffEncoder(), + "Bmp" => new BmpEncoder(), + _ => throw new ArgumentOutOfRangeException(nameof(imageFormatName), imageFormatName, null) + }; - using var bitmap = new Bitmap("_data/image/mandrill.png"); + using var image = Image.Load("_data/image/mandrill.png"); using var stream = new MemoryStream(); - bitmap.Save(stream, imageFormat!); + image.Save(stream, encoder); var imageData = stream.ToArray(); Assert.NotNull(imageData); using var mat = Cv2.ImDecode(imageData, ImreadModes.Color); Assert.NotNull(mat); Assert.False(mat.Empty()); - Assert.Equal(bitmap.Width, mat.Cols); - Assert.Equal(bitmap.Height, mat.Rows); + Assert.Equal(image.Width, mat.Cols); + Assert.Equal(image.Height, mat.Rows); ShowImagesWhenDebugMode(mat); } @@ -459,14 +459,14 @@ public void WriteMultiPagesTiff() Mat[]? readPages = null; try { - pages = files.Select(f => Image(f)).ToArray(); + pages = files.Select(f => LoadImage(f)).ToArray(); Assert.True(Cv2.ImWrite("multi.tiff", pages), "imwrite failed"); Assert.True(Cv2.ImReadMulti("multi.tiff", out readPages), "imreadmulti failed"); Assert.NotEmpty(readPages); Assert.Equal(pages.Length, readPages.Length); - for (int i = 0; i < pages.Length; i++) + for (var i = 0; i < pages.Length; i++) { ImageEquals(pages[i], readPages[i]); } @@ -485,15 +485,17 @@ public void WriteMultiPagesTiff() private static void CreateDummyImageFile(string path) { - Path.GetFullPath(path); + _ = Path.GetFullPath(path); var tempFileName = Path.GetTempFileName(); { - using var bitmap = new Bitmap(10, 10, PixelFormat.Format24bppRgb); - using var graphics = Graphics.FromImage(bitmap); - graphics.Clear(Color.Red); - // GDI+ does not support Unicode file name - bitmap.Save(tempFileName, ImageFormat.Png); + + using var image = new Image(10, 10); + image.Mutate(x => + { + x.Fill(Color.Red); + }); + image.SaveAsPng(tempFileName); } #if NET48 @@ -503,7 +505,7 @@ private static void CreateDummyImageFile(string path) } File.Move(tempFileName, path); #else - File.Move(tempFileName, path, true); + File.Move(tempFileName, path, true); #endif Assert.True(File.Exists(path), $"File '{path}' not found"); } diff --git a/test/OpenCvSharp.Tests/imgproc/CLAHETest.cs b/test/OpenCvSharp.Tests/imgproc/CLAHETest.cs index c1540a451..c8baf4865 100644 --- a/test/OpenCvSharp.Tests/imgproc/CLAHETest.cs +++ b/test/OpenCvSharp.Tests/imgproc/CLAHETest.cs @@ -8,7 +8,7 @@ public class CLAHETest : TestBase [Fact] public void Run() { - using var src = Image("lenna.png", ImreadModes.Grayscale); + using var src = LoadImage("lenna.png", ImreadModes.Grayscale); using var dst = new Mat(); using var clahe = Cv2.CreateCLAHE(); clahe.Apply(src, dst); diff --git a/test/OpenCvSharp.Tests/imgproc/ConnectedComponentsTest.cs b/test/OpenCvSharp.Tests/imgproc/ConnectedComponentsTest.cs index 8e50386ae..03c41f44f 100644 --- a/test/OpenCvSharp.Tests/imgproc/ConnectedComponentsTest.cs +++ b/test/OpenCvSharp.Tests/imgproc/ConnectedComponentsTest.cs @@ -11,7 +11,7 @@ public class ConnectedComponentsTest : TestBase [InlineData(PixelConnectivity.Connectivity8, ConnectedComponentsAlgorithmsTypes.GRANA)] public void Run(PixelConnectivity connectivity, ConnectedComponentsAlgorithmsTypes algorithmType) { - using var src = Image("alphabet.png", ImreadModes.Grayscale); + using var src = LoadImage("alphabet.png", ImreadModes.Grayscale); using var binary = new Mat(); Cv2.Threshold(src, binary, 128, 255, ThresholdTypes.BinaryInv); ShowImagesWhenDebugMode(src, binary); diff --git a/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs b/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs index 03faffe37..2e3103764 100644 --- a/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs +++ b/test/OpenCvSharp.Tests/imgproc/ImgProcTest.cs @@ -13,7 +13,7 @@ public class ImgProcTest : TestBase [Fact] public void BuildPyramidTest() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new VectorOfMat(); Cv2.BuildPyramid(src, dst, 2); Assert.Equal(3, dst.Size); @@ -74,8 +74,8 @@ public void WarpAffineBigImage() [Fact] public void BlendLinear() { - using var src1 = Image("tsukuba_left.png"); - using var src2 = Image("tsukuba_right.png"); + using var src1 = LoadImage("tsukuba_left.png"); + using var src2 = LoadImage("tsukuba_right.png"); using var weights = new Mat(src1.Size(), MatType.CV_32FC1, Scalar.All(0.5)); using var dst = new Mat(); @@ -89,7 +89,7 @@ public void BlendLinear() [Fact] public void Demosaicing() { - using var src = Image("lenna.png", ImreadModes.Grayscale); + using var src = LoadImage("lenna.png", ImreadModes.Grayscale); using var dst = new Mat(); Cv2.Demosaicing(src, dst, ColorConversionCodes.BayerBG2GRAY); @@ -134,14 +134,14 @@ public void BoxPoints() var points = Cv2.BoxPoints(rotatedRect); Assert.Equal(4, points.Length); - Assert.Equal(4.932f, points[0].X, 3); - Assert.Equal(14.931f, points[0].Y, 3); - Assert.Equal(5.069f, points[1].X, 3); - Assert.Equal(4.932f, points[1].Y, 3); - Assert.Equal(15.068f, points[2].X, 3); - Assert.Equal(5.069f, points[2].Y, 3); - Assert.Equal(14.931f, points[3].X, 3); - Assert.Equal(15.068f, points[3].Y, 3); + Assert.Equal(4.932f, points[0].X, 1e-3); + Assert.Equal(14.931f, points[0].Y, 1e-3); + Assert.Equal(5.069f, points[1].X, 1e-3); + Assert.Equal(4.932f, points[1].Y, 1e-3); + Assert.Equal(15.068f, points[2].X, 1e-3); + Assert.Equal(5.069f, points[2].Y, 1e-3); + Assert.Equal(14.931f, points[3].X, 1e-3); + Assert.Equal(15.068f, points[3].Y, 1e-3); } [Fact] @@ -150,8 +150,8 @@ public void MinEnclosingCircle() var points = new[] { new Point2f(0, 0), new Point2f(10, 0), new Point2f(10, 10), new Point2f(0, 10), }; Cv2.MinEnclosingCircle(points, out var center, out var radius); - Assert.Equal(5f, center.X, 3); - Assert.Equal(5f, center.Y, 3); + Assert.Equal(5f, center.X, 1e-3); + Assert.Equal(5f, center.Y, 1e-3); Assert.Equal(5 * Math.Sqrt(2), radius, 3); } @@ -162,12 +162,12 @@ public void MinEnclosingTriangle() var area = Cv2.MinEnclosingTriangle(points, out var triangle); Assert.Equal(3, triangle.Length); - Assert.Equal(0f, triangle[0].X, 3); - Assert.Equal(-10f, triangle[0].Y, 3); - Assert.Equal(0f, triangle[1].X, 3); - Assert.Equal(10f, triangle[1].Y, 3); - Assert.Equal(20f, triangle[2].X, 3); - Assert.Equal(10f, triangle[2].Y, 3); + Assert.Equal(0f, triangle[0].X, 1e-3); + Assert.Equal(-10f, triangle[0].Y, 1e-3); + Assert.Equal(0f, triangle[1].X, 1e-3); + Assert.Equal(10f, triangle[1].Y, 1e-3); + Assert.Equal(20f, triangle[2].X, 1e-3); + Assert.Equal(10f, triangle[2].Y, 1e-3); Assert.Equal(200f, area, 3); } @@ -289,11 +289,11 @@ public void FitEllipse() foreach (var e in ellipse) { - Assert.Equal(5f, e.Center.X, 3); - Assert.Equal(5f, e.Center.Y, 3); - Assert.Equal(11.547f, e.Size.Width, 3); - Assert.Equal(20f, e.Size.Height, 3); - Assert.Equal(0f, e.Angle, 3); + Assert.Equal(5f, e.Center.X, 1e-3); + Assert.Equal(5f, e.Center.Y, 1e-3); + Assert.Equal(11.547f, e.Size.Width, 1e-3); + Assert.Equal(20f, e.Size.Height, 1e-3); + Assert.Equal(0f, e.Angle, 1e-3); } } @@ -357,8 +357,8 @@ public void FitLineByMat() Assert.Equal(Math.Sqrt(2) / 2, dst.Get(0), 3); Assert.Equal(Math.Sqrt(2) / 2, dst.Get(1), 3); - Assert.Equal(5, dst.Get(2), 3); - Assert.Equal(5, dst.Get(3), 3); + Assert.Equal(5, dst.Get(2), 1e-3); + Assert.Equal(5, dst.Get(3), 1e-3); } } @@ -533,7 +533,7 @@ private static void TestImage(Mat img, Vec3b[,] expected) [Fact] public void ApplyColorMap() { - using var src = Image("building.jpg", ImreadModes.Color); + using var src = LoadImage("building.jpg", ImreadModes.Color); using var dst = new Mat(); Cv2.ApplyColorMap(src, dst, ColormapTypes.Cool); @@ -548,7 +548,7 @@ public void ApplyColorMap() [Fact] public void CornerHarris() { - using var src = Image("building.jpg", ImreadModes.Grayscale); + using var src = LoadImage("building.jpg", ImreadModes.Grayscale); using var corners = new Mat(); using var dst = new Mat(); Cv2.CornerHarris(src, corners, 2, 3, 0.04); @@ -564,7 +564,7 @@ public void CornerHarris() [Fact] public void CornerMinEigenVal() { - using var src = Image("building.jpg", ImreadModes.Grayscale); + using var src = LoadImage("building.jpg", ImreadModes.Grayscale); using var corners = new Mat(); using var dst = new Mat(); Cv2.CornerMinEigenVal(src, corners, 2, 3, BorderTypes.Reflect); @@ -580,7 +580,7 @@ public void CornerMinEigenVal() [Fact] public void FindContours() { - using var src = Image("markers_6x6_250.png", ImreadModes.Grayscale); + using var src = LoadImage("markers_6x6_250.png", ImreadModes.Grayscale); Cv2.BitwiseNot(src, src); Cv2.FindContours( src, diff --git a/test/OpenCvSharp.Tests/objdetect/QRCodeDetectorTest.cs b/test/OpenCvSharp.Tests/objdetect/QRCodeDetectorTest.cs index 2a23b4acb..722b3aa6c 100644 --- a/test/OpenCvSharp.Tests/objdetect/QRCodeDetectorTest.cs +++ b/test/OpenCvSharp.Tests/objdetect/QRCodeDetectorTest.cs @@ -26,14 +26,14 @@ public void ExplicitlyDetectAndDecode() bool detected = obj.Detect(withQr, out var points); Assert.True(detected); Assert.Equal(4, points.Length); - Assert.Equal(102, points[0].X, 6); - Assert.Equal(201, points[0].Y, 6); - Assert.Equal(199, points[1].X, 6); - Assert.Equal(201, points[1].Y, 6); - Assert.Equal(199, points[2].X, 6); - Assert.Equal(299, points[2].Y, 6); - Assert.Equal(102, points[3].X, 6); - Assert.Equal(299, points[3].Y, 6); + Assert.Equal(102, points[0].X, 1e-6); + Assert.Equal(201, points[0].Y, 1e-6); + Assert.Equal(199, points[1].X, 1e-6); + Assert.Equal(201, points[1].Y, 1e-6); + Assert.Equal(199, points[2].X, 1e-6); + Assert.Equal(299, points[2].Y, 1e-6); + Assert.Equal(102, points[3].X, 1e-6); + Assert.Equal(299, points[3].Y, 1e-6); using var straightQrCode = new Mat(); obj.Decode(withQr, points); @@ -55,14 +55,14 @@ public void DetectAndDecode() using var straightQrCode = new Mat(); var decodedString = obj.DetectAndDecode(withQr, out var points, straightQrCode); Assert.Equal(4, points.Length); - Assert.Equal(102, points[0].X, 6); - Assert.Equal(201, points[0].Y, 6); - Assert.Equal(199, points[1].X, 6); - Assert.Equal(201, points[1].Y, 6); - Assert.Equal(199, points[2].X, 6); - Assert.Equal(299, points[2].Y, 6); - Assert.Equal(102, points[3].X, 6); - Assert.Equal(299, points[3].Y, 6); + Assert.Equal(102, points[0].X, 1e-6); + Assert.Equal(201, points[0].Y, 1e-6); + Assert.Equal(199, points[1].X, 1e-6); + Assert.Equal(201, points[1].Y, 1e-6); + Assert.Equal(199, points[2].X, 1e-6); + Assert.Equal(299, points[2].Y, 1e-6); + Assert.Equal(102, points[3].X, 1e-6); + Assert.Equal(299, points[3].Y, 1e-6); Assert.False(straightQrCode.Empty()); Assert.Equal("https://github.com/opencv/opencv", decodedString); @@ -72,7 +72,7 @@ public void DetectAndDecode() public void DecodeSinglebyteString() { using var obj = new QRCodeDetector(); - using var withQr = Image("qr_singlebyte_letters.png"); + using var withQr = LoadImage("qr_singlebyte_letters.png"); var decodedString = obj.DetectAndDecode(withQr, out var points); @@ -84,7 +84,7 @@ public void DecodeSinglebyteString() public void DecodeMultibyteString() { using var obj = new QRCodeDetector(); - using var withQr = Image("qr_multibyte_letters.png"); + using var withQr = LoadImage("qr_multibyte_letters.png"); var decodedString = obj.DetectAndDecode(withQr, out var points); @@ -97,7 +97,7 @@ public void ExplicitlyDetectMulti() { using var obj = new QRCodeDetector(); - using var withQr = Image("qr_multi.png"); + using var withQr = LoadImage("qr_multi.png"); using var pointsMat = new Mat(); ShowImagesWhenDebugMode(withQr); @@ -131,7 +131,7 @@ public void ExplicitlyDecodeMulti() using var obj = new QRCodeDetector(); - using var withQr = Image("qr_multi.png"); + using var withQr = LoadImage("qr_multi.png"); using var pointsMat = new Mat(); ShowImagesWhenDebugMode(withQr); @@ -158,7 +158,7 @@ public void ExplicitlyDecodeMulti() [Fact] public void EmptyDetectMulti() { - var lenna = Image("lenna.png"); + var lenna = LoadImage("lenna.png"); using var obj = new QRCodeDetector(); @@ -169,8 +169,8 @@ public void EmptyDetectMulti() private static Mat ImageWithQrCode(int x, int y, out int qrWidth, out int qrHeight) { - var lenna = Image("lenna.png"); - using var qr = Image("qr.png"); + var lenna = LoadImage("lenna.png"); + using var qr = LoadImage("qr.png"); Assert.False(qr.Empty(), "Mat qr is empty."); qrWidth = qr.Width; qrHeight = qr.Height; @@ -193,8 +193,8 @@ private static void AreEquivalent(IEnumerable expectedPoints, IEnumerab foreach (var (p1, p2) in orderedExpectedPoints.Zip(orderedActualPoints, Tuple.Create)) { - Assert.Equal(p1.X, p2.X, 6); - Assert.Equal(p1.Y, p2.Y, 6); + Assert.Equal(p1.X, p2.X, 1e-6); + Assert.Equal(p1.Y, p2.Y, 1e-6); } } diff --git a/test/OpenCvSharp.Tests/photo/TonemapDragoTest.cs b/test/OpenCvSharp.Tests/photo/TonemapDragoTest.cs index 3db421fa3..597a5585e 100644 --- a/test/OpenCvSharp.Tests/photo/TonemapDragoTest.cs +++ b/test/OpenCvSharp.Tests/photo/TonemapDragoTest.cs @@ -7,7 +7,7 @@ public class TonemapDragoTest : TestBase [Fact] public void Process() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); using var tonemap = TonemapDrago.Create(); @@ -24,12 +24,12 @@ public void Process() public void Properties() { using var tonemap = TonemapDrago.Create(2.2f, 1.5f, 0.95f); - Assert.Equal(1.5f, tonemap.Saturation, 3); - Assert.Equal(0.95f, tonemap.Bias, 3); + Assert.Equal(1.5f, tonemap.Saturation, 1e-3); + Assert.Equal(0.95f, tonemap.Bias, 1e-3); tonemap.Saturation = 5.8f; tonemap.Bias = 0.5f; - Assert.Equal(5.8f, tonemap.Saturation, 3); - Assert.Equal(0.5f, tonemap.Bias, 3); + Assert.Equal(5.8f, tonemap.Saturation, 1e-3); + Assert.Equal(0.5f, tonemap.Bias, 1e-3); } } diff --git a/test/OpenCvSharp.Tests/photo/TonemapMantiukTest.cs b/test/OpenCvSharp.Tests/photo/TonemapMantiukTest.cs index dccf03d68..fa5f63984 100644 --- a/test/OpenCvSharp.Tests/photo/TonemapMantiukTest.cs +++ b/test/OpenCvSharp.Tests/photo/TonemapMantiukTest.cs @@ -7,7 +7,7 @@ public class TonemapMantiukTest : TestBase [Fact] public void Process() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); using var tonemap = TonemapMantiuk.Create(); @@ -24,12 +24,12 @@ public void Process() public void Properties() { using var tonemap = TonemapMantiuk.Create(2.2f, 1.5f, 1.8f); - Assert.Equal(1.5f, tonemap.Scale, 3); - Assert.Equal(1.8f, tonemap.Saturation, 3); + Assert.Equal(1.5f, tonemap.Scale, 1e-3); + Assert.Equal(1.8f, tonemap.Saturation, 1e-3); tonemap.Scale = 0.5f; tonemap.Saturation = 0.8f; - Assert.Equal(0.5f, tonemap.Scale, 3); - Assert.Equal(0.8f, tonemap.Saturation, 3); + Assert.Equal(0.5f, tonemap.Scale, 1e-3); + Assert.Equal(0.8f, tonemap.Saturation, 1e-3); } } diff --git a/test/OpenCvSharp.Tests/photo/TonemapReinhardTest.cs b/test/OpenCvSharp.Tests/photo/TonemapReinhardTest.cs index 7dbdde245..ac1599f11 100644 --- a/test/OpenCvSharp.Tests/photo/TonemapReinhardTest.cs +++ b/test/OpenCvSharp.Tests/photo/TonemapReinhardTest.cs @@ -7,7 +7,7 @@ public class TonemapReinhardTest : TestBase [Fact] public void Process() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); using var tonemap = TonemapReinhard.Create(); @@ -24,15 +24,15 @@ public void Process() public void Properties() { using var tonemap = TonemapReinhard.Create(2.2f, 1.1f, 0.8f, 0.7f); - Assert.Equal(1.1f, tonemap.Intensity, 3); - Assert.Equal(0.8f, tonemap.LightAdaptation, 3); - Assert.Equal(0.7f, tonemap.ColorAdaptation, 3); + Assert.Equal(1.1f, tonemap.Intensity, 1e-3); + Assert.Equal(0.8f, tonemap.LightAdaptation, 1e-3); + Assert.Equal(0.7f, tonemap.ColorAdaptation, 1e-3); tonemap.Intensity = 1.8f; tonemap.LightAdaptation = 0.5f; tonemap.ColorAdaptation = 0.4f; - Assert.Equal(1.8f, tonemap.Intensity, 3); - Assert.Equal(0.5f, tonemap.LightAdaptation, 3); - Assert.Equal(0.4f, tonemap.ColorAdaptation, 3); + Assert.Equal(1.8f, tonemap.Intensity, 1e-3); + Assert.Equal(0.5f, tonemap.LightAdaptation, 1e-3); + Assert.Equal(0.4f, tonemap.ColorAdaptation, 1e-3); } } diff --git a/test/OpenCvSharp.Tests/photo/TonemapTest.cs b/test/OpenCvSharp.Tests/photo/TonemapTest.cs index 5b87627e6..34b7b23f9 100644 --- a/test/OpenCvSharp.Tests/photo/TonemapTest.cs +++ b/test/OpenCvSharp.Tests/photo/TonemapTest.cs @@ -7,7 +7,7 @@ public class TonemapTest : TestBase [Fact] public void Process() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); using var tonemap = Tonemap.Create(2.2f); @@ -24,9 +24,9 @@ public void Process() public void Properties() { using var tonemap = Tonemap.Create(2.2f); - Assert.Equal(2.2f, tonemap.Gamma, 3); + Assert.Equal(2.2f, tonemap.Gamma, 1e-3); tonemap.Gamma = 0.5f; - Assert.Equal(0.5f, tonemap.Gamma, 3); + Assert.Equal(0.5f, tonemap.Gamma, 1e-3); } } diff --git a/test/OpenCvSharp.Tests/quality/QualityBRISQUETest.cs b/test/OpenCvSharp.Tests/quality/QualityBRISQUETest.cs index 874bf4694..a1ba294e3 100644 --- a/test/OpenCvSharp.Tests/quality/QualityBRISQUETest.cs +++ b/test/OpenCvSharp.Tests/quality/QualityBRISQUETest.cs @@ -13,7 +13,7 @@ public class QualityBRISQUETest : TestBase [Fact] public void Compute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) using (var psnr = QualityBRISQUE.Create(ModelFile, RangeFile)) { @@ -34,7 +34,7 @@ public void Compute() [Fact] public void StaticCompute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) { Cv2.GaussianBlur(refImage, targetImage, new Size(5, 5), 15); diff --git a/test/OpenCvSharp.Tests/quality/QualityGMSDTest.cs b/test/OpenCvSharp.Tests/quality/QualityGMSDTest.cs index 857b42aa4..3511bf818 100644 --- a/test/OpenCvSharp.Tests/quality/QualityGMSDTest.cs +++ b/test/OpenCvSharp.Tests/quality/QualityGMSDTest.cs @@ -8,7 +8,7 @@ public class QualityGMSDTest : TestBase [Fact] public void Compute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) using (var psnr = QualityGMSD.Create(refImage)) { @@ -24,7 +24,7 @@ public void Compute() [Fact] public void StaticCompute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) { Cv2.GaussianBlur(refImage, targetImage, new Size(5, 5), 15); diff --git a/test/OpenCvSharp.Tests/quality/QualityMSETest.cs b/test/OpenCvSharp.Tests/quality/QualityMSETest.cs index b5000a9a9..f4f80fb77 100644 --- a/test/OpenCvSharp.Tests/quality/QualityMSETest.cs +++ b/test/OpenCvSharp.Tests/quality/QualityMSETest.cs @@ -8,7 +8,7 @@ public class QualityMSETest : TestBase [Fact] public void Compute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) using (var psnr = QualityMSE.Create(refImage)) { @@ -24,7 +24,7 @@ public void Compute() [Fact] public void StaticCompute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) { Cv2.GaussianBlur(refImage, targetImage, new Size(5, 5), 15); diff --git a/test/OpenCvSharp.Tests/quality/QualityPSNRTest.cs b/test/OpenCvSharp.Tests/quality/QualityPSNRTest.cs index e58692e09..d5e3ef86c 100644 --- a/test/OpenCvSharp.Tests/quality/QualityPSNRTest.cs +++ b/test/OpenCvSharp.Tests/quality/QualityPSNRTest.cs @@ -11,7 +11,7 @@ public class QualityPSNRTest : TestBase [Fact] public void Compute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) using (var psnr = QualityPSNR.Create(refImage)) { @@ -27,7 +27,7 @@ public void Compute() [Fact] public void StaticCompute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) { Cv2.GaussianBlur(refImage, targetImage, new Size(5, 5), 15); @@ -42,7 +42,7 @@ public void StaticCompute() [Fact] public void PropertyMaxPixelValue() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var psnr = QualityPSNR.Create(refImage)) { const double value = 123.456; diff --git a/test/OpenCvSharp.Tests/quality/QualitySSIMTest.cs b/test/OpenCvSharp.Tests/quality/QualitySSIMTest.cs index c0bd42ef3..a9cee82c2 100644 --- a/test/OpenCvSharp.Tests/quality/QualitySSIMTest.cs +++ b/test/OpenCvSharp.Tests/quality/QualitySSIMTest.cs @@ -8,7 +8,7 @@ public class QualitySSIMTest : TestBase [Fact] public void Compute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) using (var psnr = QualitySSIM.Create(refImage)) { @@ -24,7 +24,7 @@ public void Compute() [Fact] public void StaticCompute() { - using (var refImage = Image("lenna.png")) + using (var refImage = LoadImage("lenna.png")) using (var targetImage = new Mat()) { Cv2.GaussianBlur(refImage, targetImage, new Size(5, 5), 15); diff --git a/test/OpenCvSharp.Tests/stitching/CvDetailTest.cs b/test/OpenCvSharp.Tests/stitching/CvDetailTest.cs index e7891aef1..83ed3cef7 100644 --- a/test/OpenCvSharp.Tests/stitching/CvDetailTest.cs +++ b/test/OpenCvSharp.Tests/stitching/CvDetailTest.cs @@ -10,7 +10,7 @@ public class CvDetailTest: TestBase public void ComputeImageFeaturesTest() { using var featuresFinder = AKAZE.Create(); - using var image = Image("abbey_road.jpg", ImreadModes.Grayscale); + using var image = LoadImage("abbey_road.jpg", ImreadModes.Grayscale); using var features = CvDetail.ComputeImageFeatures(featuresFinder, image); Assert.NotNull(features); @@ -25,8 +25,8 @@ public void ComputeImageFeaturesTest() public void BestOf2NearestMatcherTest() { using var featuresFinder = AKAZE.Create(); - using var image1 = Image("tsukuba_left.png", ImreadModes.Grayscale); - using var image2 = Image("tsukuba_right.png", ImreadModes.Grayscale); + using var image1 = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + using var image2 = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var features1 = CvDetail.ComputeImageFeatures(featuresFinder, image1); using var features2 = CvDetail.ComputeImageFeatures(featuresFinder, image2); @@ -43,8 +43,8 @@ public void BestOf2NearestMatcherTest() public void AffineBestOf2NearestMatcherTest() { using var featuresFinder = AKAZE.Create(); - using var image1 = Image("tsukuba_left.png", ImreadModes.Grayscale); - using var image2 = Image("tsukuba_right.png", ImreadModes.Grayscale); + using var image1 = LoadImage("tsukuba_left.png", ImreadModes.Grayscale); + using var image2 = LoadImage("tsukuba_right.png", ImreadModes.Grayscale); using var features1 = CvDetail.ComputeImageFeatures(featuresFinder, image1); using var features2 = CvDetail.ComputeImageFeatures(featuresFinder, image2); diff --git a/test/OpenCvSharp.Tests/stitching/StitchingTest.cs b/test/OpenCvSharp.Tests/stitching/StitchingTest.cs index 75629fcd9..7a0dcc1dd 100644 --- a/test/OpenCvSharp.Tests/stitching/StitchingTest.cs +++ b/test/OpenCvSharp.Tests/stitching/StitchingTest.cs @@ -43,7 +43,7 @@ private static Mat[] SelectStitchingImages(int width, int height, int count) { var mats = new List(); - using var source = Image(@"lenna.png"); + using var source = LoadImage(@"lenna.png"); using var result = source.Clone(); var rand = new Random(123); // constant seed for test for (int i = 0; i < count; i++) diff --git a/test/OpenCvSharp.Tests/text/OCRTesseractTest.cs b/test/OpenCvSharp.Tests/text/OCRTesseractTest.cs index ce1a717cc..ab371aaea 100644 --- a/test/OpenCvSharp.Tests/text/OCRTesseractTest.cs +++ b/test/OpenCvSharp.Tests/text/OCRTesseractTest.cs @@ -30,7 +30,7 @@ public void Create() [Fact] public void Run() { - using (var image = Image("alphabet.png")) + using (var image = LoadImage("alphabet.png")) using (var tesseract = OCRTesseract.Create(TessData, "eng")) { tesseract.Run(image, diff --git a/test/OpenCvSharp.Tests/text/TextDetectorTest.cs b/test/OpenCvSharp.Tests/text/TextDetectorTest.cs index c52296f3e..41fa65ca7 100644 --- a/test/OpenCvSharp.Tests/text/TextDetectorTest.cs +++ b/test/OpenCvSharp.Tests/text/TextDetectorTest.cs @@ -45,7 +45,7 @@ public void Create() public void Detect() { using var detector = TextDetectorCNN.Create(ModelArch, ModelWeights); - using var image = Image("imageTextR.png", ImreadModes.Color); + using var image = LoadImage("imageTextR.png", ImreadModes.Color); detector.Detect(image, out var boxes, out var confidences); Assert.NotEmpty(boxes); diff --git a/test/OpenCvSharp.Tests/tracking/TrackerTestBase.cs b/test/OpenCvSharp.Tests/tracking/TrackerTestBase.cs index c6e05beee..cad9adad0 100644 --- a/test/OpenCvSharp.Tests/tracking/TrackerTestBase.cs +++ b/test/OpenCvSharp.Tests/tracking/TrackerTestBase.cs @@ -14,7 +14,7 @@ protected static void InitBase(Tracker tracker) if (tracker is null) throw new ArgumentNullException(nameof(tracker)); - using var vc = Image("lenna.png"); + using var vc = LoadImage("lenna.png"); tracker.Init(vc, new Rect(220, 60, 200, 220)); } diff --git a/test/OpenCvSharp.Tests/video/BackgroundSubtractorKNNTest.cs b/test/OpenCvSharp.Tests/video/BackgroundSubtractorKNNTest.cs index 24903f37f..c3b7ea2ad 100644 --- a/test/OpenCvSharp.Tests/video/BackgroundSubtractorKNNTest.cs +++ b/test/OpenCvSharp.Tests/video/BackgroundSubtractorKNNTest.cs @@ -24,7 +24,7 @@ public void CheckProperties() public void Apply() { using (var knn = BackgroundSubtractorKNN.Create()) - using (var src = Image("lenna.png")) + using (var src = LoadImage("lenna.png")) using (var dst = new Mat()) { knn.Apply(src, dst); diff --git a/test/OpenCvSharp.Tests/video/BackgroundSubtractorMOG2Test.cs b/test/OpenCvSharp.Tests/video/BackgroundSubtractorMOG2Test.cs index 80b4b0f06..1b7e578f4 100644 --- a/test/OpenCvSharp.Tests/video/BackgroundSubtractorMOG2Test.cs +++ b/test/OpenCvSharp.Tests/video/BackgroundSubtractorMOG2Test.cs @@ -29,7 +29,7 @@ public void CheckProperties() public void Apply() { using (var mog = BackgroundSubtractorMOG2.Create()) - using (var src = Image("lenna.png")) + using (var src = LoadImage("lenna.png")) using (var dst = new Mat()) { mog.Apply(src, dst); diff --git a/test/OpenCvSharp.Tests/videoio/VideoWriterTest.cs b/test/OpenCvSharp.Tests/videoio/VideoWriterTest.cs index 522241af1..1775264e7 100644 --- a/test/OpenCvSharp.Tests/videoio/VideoWriterTest.cs +++ b/test/OpenCvSharp.Tests/videoio/VideoWriterTest.cs @@ -21,7 +21,7 @@ public void WriteAndCapture() const string fileName = "dummy1.avi"; try { - using var image = Image("lenna.png"); + using var image = LoadImage("lenna.png"); { using var writer = new VideoWriter(fileName, VideoCaptureAPIs.OPENCV_MJPEG, FourCC.MJPG, 10, image.Size()); diff --git a/test/OpenCvSharp.Tests/xfeatures2d/LATCHTest.cs b/test/OpenCvSharp.Tests/xfeatures2d/LATCHTest.cs index c790742fb..1f46fdc39 100644 --- a/test/OpenCvSharp.Tests/xfeatures2d/LATCHTest.cs +++ b/test/OpenCvSharp.Tests/xfeatures2d/LATCHTest.cs @@ -16,8 +16,8 @@ public void CreateAndDispose() [Fact] public void Compute() { - using (var color = Image("lenna.png", ImreadModes.Color)) - using (var gray = Image("lenna.png", ImreadModes.Grayscale)) + using (var color = LoadImage("lenna.png", ImreadModes.Color)) + using (var gray = LoadImage("lenna.png", ImreadModes.Grayscale)) using (var descriptors = new Mat()) using (var latch = LATCH.Create()) using (var surf = SURF.Create(500)) diff --git a/test/OpenCvSharp.Tests/xfeatures2d/LUCIDTest.cs b/test/OpenCvSharp.Tests/xfeatures2d/LUCIDTest.cs index 6b44807f4..e56f73566 100644 --- a/test/OpenCvSharp.Tests/xfeatures2d/LUCIDTest.cs +++ b/test/OpenCvSharp.Tests/xfeatures2d/LUCIDTest.cs @@ -16,8 +16,8 @@ public void CreateAndDispose() [Fact] public void Compute() { - using (var color = Image("lenna.png", ImreadModes.Color)) - using (var gray = Image("lenna.png", ImreadModes.Grayscale)) + using (var color = LoadImage("lenna.png", ImreadModes.Color)) + using (var gray = LoadImage("lenna.png", ImreadModes.Grayscale)) using (var descriptors = new Mat()) using (var lucid = LUCID.Create()) using (var surf = SURF.Create(500)) diff --git a/test/OpenCvSharp.Tests/xfeatures2d/SURFTest.cs b/test/OpenCvSharp.Tests/xfeatures2d/SURFTest.cs index ffe407b42..967a53bd6 100644 --- a/test/OpenCvSharp.Tests/xfeatures2d/SURFTest.cs +++ b/test/OpenCvSharp.Tests/xfeatures2d/SURFTest.cs @@ -26,7 +26,7 @@ public void CreateAndDispose() public void Detect() { // This parameter should introduce same result of http://opencv.jp/wordpress/wp-content/uploads/lenna_SURF-150x150.png - using var gray = Image("lenna.png", 0); + using var gray = LoadImage("lenna.png", 0); using var surf = SURF.Create(500, 4, 2, true); var keyPoints = surf.Detect(gray); @@ -36,7 +36,7 @@ public void Detect() [Fact] public void DetectAndCompute() { - using (var gray = Image("lenna.png", ImreadModes.Grayscale)) + using (var gray = LoadImage("lenna.png", ImreadModes.Grayscale)) using (var surf = SURF.Create(500)) using (Mat descriptor = new Mat()) { diff --git a/test/OpenCvSharp.Tests/ximgproc/EdgeFilterTest.cs b/test/OpenCvSharp.Tests/ximgproc/EdgeFilterTest.cs index c6055f748..09ada410e 100644 --- a/test/OpenCvSharp.Tests/ximgproc/EdgeFilterTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/EdgeFilterTest.cs @@ -10,7 +10,7 @@ public class EdgeFilterTest : TestBase [Fact] public void EnhanceByGuidedFilter() { - using var image = Image("lenna.png", ImreadModes.Color); + using var image = LoadImage("lenna.png", ImreadModes.Color); image.ConvertTo(image, MatType.CV_32F, 1.0 / 255.0); using var gf = GuidedFilter.Create(image, 16, 0.01); diff --git a/test/OpenCvSharp.Tests/ximgproc/FastHoughTransformTest.cs b/test/OpenCvSharp.Tests/ximgproc/FastHoughTransformTest.cs index 1f3e2b3ad..1dc4a9dfc 100644 --- a/test/OpenCvSharp.Tests/ximgproc/FastHoughTransformTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/FastHoughTransformTest.cs @@ -17,7 +17,7 @@ public class FastHoughTransformTest : TestBase [Fact] public void FastHoughTransform() { - using (var image = Image("building.jpg", ImreadModes.Grayscale)) + using (var image = LoadImage("building.jpg", ImreadModes.Grayscale)) using (var fht = new Mat()) { CvXImgProc.FastHoughTransform(image, fht, MatType.CV_32SC1); diff --git a/test/OpenCvSharp.Tests/ximgproc/FastLineDetectorTest.cs b/test/OpenCvSharp.Tests/ximgproc/FastLineDetectorTest.cs index 5b7d95789..19840b22e 100644 --- a/test/OpenCvSharp.Tests/ximgproc/FastLineDetectorTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/FastLineDetectorTest.cs @@ -23,7 +23,7 @@ public void New2() public void DetectUsingOutputArray() { using var fld = FastLineDetector.Create(); - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var lines = new Mat(); fld.Detect(image, lines); Assert.False(lines.Empty()); @@ -35,7 +35,7 @@ public void DetectUsingOutputArray() public void DetectUsingVector() { using var fld = FastLineDetector.Create(); - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); Vec4f[] lines = fld.Detect(image); Assert.NotNull(lines); Assert.True(lines.Length > 0); @@ -45,7 +45,7 @@ public void DetectUsingVector() public void DrawSegmentsUsingInputArray() { using var fld = FastLineDetector.Create(); - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var view = image.Clone(); using var lines = new Mat(); fld.Detect(image, lines); @@ -57,7 +57,7 @@ public void DrawSegmentsUsingInputArray() public void DrawSegmentsUsingVector() { using var fld = FastLineDetector.Create(); - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var view = image.Clone(); Vec4f[] lines = fld.Detect(image); fld.DrawSegments(view, lines, true); diff --git a/test/OpenCvSharp.Tests/ximgproc/StructuredEdgeDetectionTest.cs b/test/OpenCvSharp.Tests/ximgproc/StructuredEdgeDetectionTest.cs index f2f33eda4..94988058b 100644 --- a/test/OpenCvSharp.Tests/ximgproc/StructuredEdgeDetectionTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/StructuredEdgeDetectionTest.cs @@ -45,7 +45,7 @@ public void DetectEdges() Assert.True(File.Exists(Model), $"Failed to download {ModelUrl}"); using (var obj = StructuredEdgeDetection.Create(Model)) - using (var image = Image("blob/shapes1.png", ImreadModes.Color)) + using (var image = LoadImage("blob/shapes1.png", ImreadModes.Color)) using (var image32F = new Mat()) using (var edges = new Mat()) using (var orientation = new Mat()) @@ -67,7 +67,7 @@ public void GetBoundingBoxes() Assert.True(File.Exists(Model), $"Failed to download {ModelUrl}"); using (var obj = StructuredEdgeDetection.Create(Model)) - using (var image = Image("blob/shapes1.png", ImreadModes.Color)) + using (var image = LoadImage("blob/shapes1.png", ImreadModes.Color)) using (var image32F = new Mat()) using (var edges = new Mat()) using (var orientation = new Mat()) diff --git a/test/OpenCvSharp.Tests/ximgproc/SuperpixelTest.cs b/test/OpenCvSharp.Tests/ximgproc/SuperpixelTest.cs index 0ed167051..282b034e5 100644 --- a/test/OpenCvSharp.Tests/ximgproc/SuperpixelTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/SuperpixelTest.cs @@ -10,7 +10,7 @@ public class SuperpixelTest : TestBase [Fact] public void LscNew() { - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var lsc = SuperpixelLSC.Create(image); GC.KeepAlive(lsc); } @@ -18,7 +18,7 @@ public void LscNew() [Fact] public void SlicNew() { - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var slic = SuperpixelSLIC.Create(image); GC.KeepAlive(slic); } @@ -26,7 +26,7 @@ public void SlicNew() [Fact] public void SeedsNew() { - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var seeds = SuperpixelSEEDS.Create( image.Width, image.Height, @@ -39,7 +39,7 @@ public void SeedsNew() [Fact] public void LscSimple() { - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var lsc = SuperpixelLSC.Create(image); lsc.Iterate(10); @@ -66,7 +66,7 @@ public void LscSimple() [Fact] public void SlicSimple() { - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var slic = SuperpixelSLIC.Create(image); slic.Iterate(10); @@ -96,7 +96,7 @@ public void SlicSimple() [PlatformSpecificFact("Windows")] public void SeedsSimple() { - using var image = Image("building.jpg", ImreadModes.Grayscale); + using var image = LoadImage("building.jpg", ImreadModes.Grayscale); using var seeds = SuperpixelSEEDS.Create( image.Width, image.Height, diff --git a/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs b/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs index d54a864ac..55369bb8c 100644 --- a/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs +++ b/test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs @@ -15,7 +15,7 @@ public class XImgProcTest : TestBase [InlineData(LocalBinarizationMethods.Nick)] public void Niblack(LocalBinarizationMethods method) { - using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var src = LoadImage("mandrill.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXImgProc.NiblackThreshold(src, dst, 255, ThresholdTypes.Binary, 5, 0.5, method); ShowImagesWhenDebugMode(dst); @@ -26,7 +26,7 @@ public void Sauvola() { foreach (var r in new double[]{16, 32, 64, 128}) { - using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var src = LoadImage("mandrill.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXImgProc.NiblackThreshold( src, dst, @@ -42,7 +42,7 @@ public void Sauvola() [Fact] public void Thinning() { - using var src = Image("blob/shapes2.png", ImreadModes.Grayscale); + using var src = LoadImage("blob/shapes2.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXImgProc.Thinning(src, dst, ThinningTypes.ZHANGSUEN); ShowImagesWhenDebugMode(src, dst); @@ -51,7 +51,7 @@ public void Thinning() [Fact] public void AnisotropicDiffusion() { - using var src = Image("blob/shapes2.png", ImreadModes.Color); + using var src = LoadImage("blob/shapes2.png", ImreadModes.Color); using var dst = new Mat(); CvXImgProc.AnisotropicDiffusion(src, dst, 1, 1, 1); ShowImagesWhenDebugMode(src, dst); @@ -60,7 +60,7 @@ public void AnisotropicDiffusion() [Fact] public void WeightedMedianFilter() { - using var src = Image("lenna.png", ImreadModes.Grayscale); + using var src = LoadImage("lenna.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXImgProc.WeightedMedianFilter(src, src, dst, 7); ShowImagesWhenDebugMode(dst); @@ -70,7 +70,7 @@ public void WeightedMedianFilter() public void CovarianceEstimation() { const int windowSize = 7; - using var src = Image("lenna.png", ImreadModes.Grayscale); + using var src = LoadImage("lenna.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXImgProc.CovarianceEstimation(src, dst, windowSize, windowSize); // TODO @@ -84,7 +84,7 @@ public void CovarianceEstimation() [Fact] public void BrightEdges() { - using var src = Image("lenna.png", ImreadModes.Color); + using var src = LoadImage("lenna.png", ImreadModes.Color); using var dst = new Mat(); CvXImgProc.BrightEdges(src, dst); ShowImagesWhenDebugMode(src, dst); @@ -95,7 +95,7 @@ public void BrightEdges() [Fact] public void ColorMatchTemplate() { - using var src = Image("lenna.png", ImreadModes.Color); + using var src = LoadImage("lenna.png", ImreadModes.Color); using var template = src[new Rect(200, 230, 150, 150)]; using var dst = new Mat(); @@ -115,7 +115,7 @@ public void ColorMatchTemplate() [Fact] public void GradientDeriche() { - using var src = Image("lenna.png", ImreadModes.Color); + using var src = LoadImage("lenna.png", ImreadModes.Color); using var dstX = new Mat(); using var dstY = new Mat(); CvXImgProc.GradientDericheX(src, dstX, 10.0, 10.0); @@ -128,7 +128,7 @@ public void GradientDeriche() [Fact] public void EdgePreservingFilter() { - using var src = Image("lenna.png", ImreadModes.Color); + using var src = LoadImage("lenna.png", ImreadModes.Color); using var dst = new Mat(); CvXImgProc.EdgePreservingFilter(src, dst, 7, 10.0); ShowImagesWhenDebugMode(src, dst); @@ -139,7 +139,7 @@ public void EdgePreservingFilter() [Fact] public void RLThreshold() { - using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var src = LoadImage("mandrill.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXImgProc.RL.Threshold(src, dst, 128, ThresholdTypes.Binary); @@ -161,7 +161,7 @@ public void RLGetStructuringElement() [Fact] public void RLDilateErode() { - using var src = Image("mandrill.png", ImreadModes.Grayscale); + using var src = LoadImage("mandrill.png", ImreadModes.Grayscale); using var binary = new Mat(); using var dilate = new Mat(); using var erode = new Mat(); @@ -186,7 +186,7 @@ public void RLDilateErode() [Fact] public void PeiLinNormalization() { - using var src = Image("peilin_plane.png", ImreadModes.Grayscale); + using var src = LoadImage("peilin_plane.png", ImreadModes.Grayscale); using var tMat = src.Clone(); CvXImgProc.PeiLinNormalization(src, tMat); var tArray = CvXImgProc.PeiLinNormalization(src); diff --git a/test/OpenCvSharp.Tests/xphoto/TonemapDurandTest.cs b/test/OpenCvSharp.Tests/xphoto/TonemapDurandTest.cs index 59f1b5d57..6216186d8 100644 --- a/test/OpenCvSharp.Tests/xphoto/TonemapDurandTest.cs +++ b/test/OpenCvSharp.Tests/xphoto/TonemapDurandTest.cs @@ -8,7 +8,7 @@ public class TonemapDurandTest : TestBase [Fact] public void Process() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); using var tonemap = TonemapDurand.Create(); @@ -25,8 +25,8 @@ public void Process() public void Properties() { using var tonemap = TonemapDurand.Create(1.2f, 3.0f, 1.5f, 2.2f, 1.3f); - Assert.Equal(3.0f, tonemap.Contrast, 3); - Assert.Equal(1.5f, tonemap.Saturation, 3); + Assert.Equal(3.0f, tonemap.Contrast, 1e-3); + Assert.Equal(1.5f, tonemap.Saturation, 1e-3); // TODO OpenCV bug https://github.com/opencv/opencv_contrib/pull/2398 //Assert.Equal(2.2f, tonemap.SigmaSpace, 3); @@ -36,8 +36,8 @@ public void Properties() tonemap.Saturation = 2.0f; tonemap.SigmaSpace = 2.5f; tonemap.SigmaColor = 2.5f; - Assert.Equal(3.5f, tonemap.Contrast, 3); - Assert.Equal(2.0f, tonemap.Saturation, 3); + Assert.Equal(3.5f, tonemap.Contrast, 1e-3); + Assert.Equal(2.0f, tonemap.Saturation, 1e-3); //Assert.Equal(2.5f, tonemap.SigmaSpace, 3); //Assert.Equal(2.5f, tonemap.SigmaColor, 3); } diff --git a/test/OpenCvSharp.Tests/xphoto/XPhotoTest.cs b/test/OpenCvSharp.Tests/xphoto/XPhotoTest.cs index 8f56b9cf2..7277a7ce7 100644 --- a/test/OpenCvSharp.Tests/xphoto/XPhotoTest.cs +++ b/test/OpenCvSharp.Tests/xphoto/XPhotoTest.cs @@ -19,7 +19,7 @@ public XPhotoTest(ITestOutputHelper testOutputHelper) [Fact] public void ApplyChannelGains() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var b = new Mat(src.Rows, src.Cols, src.Type()); using var g = new Mat(src.Rows, src.Cols, src.Type()); using var r = new Mat(src.Rows, src.Cols, src.Type()); @@ -46,7 +46,7 @@ public void ApplyChannelGains() public void GrayworldWBBalanceWhite() { using var wb = CvXPhoto.CreateGrayworldWB(); - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(src.Rows, src.Cols, src.Type()); wb.BalanceWhite(src, dst); @@ -77,8 +77,8 @@ public void GrayworldWBProperties() [Fact] public void Inpaint() { - using var src = Image("building.jpg"); - using var mask = Image("building_mask.bmp", ImreadModes.Grayscale); + using var src = LoadImage("building.jpg"); + using var mask = LoadImage("building_mask.bmp", ImreadModes.Grayscale); using var dst = new Mat(src.Size(), src.Type()); CvXPhoto.Inpaint(src, mask, dst, InpaintTypes.SHIFTMAP); ShowImagesWhenDebugMode(src); @@ -89,7 +89,7 @@ public void Inpaint() public void LearningBasedWBBalanceWhite() { using var wb = CvXPhoto.CreateLearningBasedWB(null); - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(src.Rows, src.Cols, src.Type()); wb.BalanceWhite(src, dst); @@ -108,7 +108,7 @@ public void LearningBasedWBBalanceWhite() public void LearningBasedWBExtractSimpleFeatures() { using var wb = LearningBasedWB.Create(null); - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); wb.ExtractSimpleFeatures(src, dst); @@ -135,7 +135,7 @@ public void LearningBasedWBBalanceWhiteWithModel() // About model file // http://docs.opencv.org/trunk/dc/dcb/tutorial_xphoto_training_white_balance.html using var wb = CvXPhoto.CreateLearningBasedWB(""); - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(src.Rows, src.Cols, src.Type()); wb.BalanceWhite(src, dst); @@ -177,7 +177,7 @@ public void LearningBasedWBProperties() public void SimpleWBBalanceWhite() { using var wb = CvXPhoto.CreateSimpleWB(); - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(src.Rows, src.Cols, src.Type()); wb.BalanceWhite(src, dst); @@ -225,7 +225,7 @@ public void SimpleWBProperties() [Fact] public void DctDenoising() { - using var src = Image("lenna.png"); + using var src = LoadImage("lenna.png"); using var dst = new Mat(); CvXPhoto.DctDenoising(src, dst, 1); @@ -238,7 +238,7 @@ public void DctDenoising() [Fact] public void Bm3dDenoising() { - using var src = Image("lenna.png", ImreadModes.Grayscale); + using var src = LoadImage("lenna.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXPhoto.Bm3dDenoising(src, dst); @@ -251,7 +251,7 @@ public void Bm3dDenoising() [Fact] public void OilPainting() { - using var src = Image("lenna.png", ImreadModes.Grayscale); + using var src = LoadImage("lenna.png", ImreadModes.Grayscale); using var dst = new Mat(); CvXPhoto.OilPainting(src, dst, 5, 10); @@ -273,7 +273,7 @@ public void Sample() { RestoreDirectory = true, Multiselect = true, - Filter = "Image Files(*.png;*.jpg;*.jpeg;*.bmp)|*.png;*.jpg;*.jpeg;*.bmp" + Filter = "LoadImage Files(*.png;*.jpg;*.jpeg;*.bmp)|*.png;*.jpg;*.jpeg;*.bmp" }) { if (dialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) diff --git a/tool/OpenCvSharp.ReleaseMaker/Packer.cs b/tool/OpenCvSharp.ReleaseMaker/Packer.cs index 4a323446f..4ad8fd2af 100644 --- a/tool/OpenCvSharp.ReleaseMaker/Packer.cs +++ b/tool/OpenCvSharp.ReleaseMaker/Packer.cs @@ -36,16 +36,6 @@ public static class Packer @"OpenCvSharp.Extensions\bin\Release\netstandard2.1\OpenCvSharp.Extensions.dll", @"OpenCvSharp.Extensions\bin\Release\netstandard2.1\OpenCvSharp.Extensions.pdb", }, - ["netcoreapp3.1"] = new[] - { - @"OpenCvSharp\bin\Release\netcoreapp3.1\OpenCvSharp.dll", - @"OpenCvSharp\bin\Release\netcoreapp3.1\OpenCvSharp.dll.config", - @"OpenCvSharp\bin\Release\netcoreapp3.1\OpenCvSharp.pdb", - @"OpenCvSharp.Extensions\bin\Release\netcoreapp3.1\OpenCvSharp.Extensions.dll", - @"OpenCvSharp.Extensions\bin\Release\netcoreapp3.1\OpenCvSharp.Extensions.pdb", - @"OpenCvSharp.WpfExtensions\bin\Release\netcoreapp3.1\OpenCvSharp.WpfExtensions.dll", - @"OpenCvSharp.WpfExtensions\bin\Release\netcoreapp3.1\OpenCvSharp.WpfExtensions.pdb", - }, ["net6.0"] = new[] { @"OpenCvSharp\bin\Release\net6.0\OpenCvSharp.dll", @@ -135,7 +125,7 @@ private static void MakeBinaryPackage(string dir, string dirDst, string opencvVe using var zipStream = File.OpenWrite(dstFileName); using var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, false); - // net48, netcoreapp3.1といったplatformごとにDLLを選択 + // net48, net6.0といったplatformごとにDLLを選択 foreach (var (frameworkName, dllFileNames) in dllFiles) { foreach (var dllFileName in dllFileNames)