Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/docker-ubuntu20.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ jobs:

- name: docker build
run: |
cd docker/ubuntu20-dotnet6sdk-opencv4.6.0
docker build -t shimat/ubuntu20-dotnet6sdk-opencv4.6.0 .
cd docker/ubuntu22-dotnet6sdk-opencv4.7.0
docker build -t shimat/ubuntu22-dotnet6sdk-opencv4.7.0 .
4 changes: 2 additions & 2 deletions .github/workflows/publish_nuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ jobs:
uses: dawidd6/action-download-artifact@v2
with:
github_token: ${{secrets.GITHUB_TOKEN}}
workflow: ubuntu18.yml
name: artifacts_ubuntu_18
workflow: ubuntu20.yml
name: artifacts_ubuntu_20

- name: Download ubuntu arm artifact
uses: dawidd6/action-download-artifact@v2
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/ubuntu20.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,11 @@ jobs:
run: |
yyyymmdd=`date '+%Y%m%d'`
echo $yyyymmdd
sed -E --in-place=.bak "s/<version>[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/<version>${OPENCV_VERSION}.${yyyymmdd}${BETA}<\/version>/" ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.ubuntu.20.04-x64.nuspec
cat ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.ubuntu.20.04-x64.nuspec
dotnet pack ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4.runtime.ubuntu.20.04-x64.csproj -o ${GITHUB_WORKSPACE}/artifacts_ubuntu
sed -E --in-place=.bak \
"s/<version>[0-9]\.[0-9]{1,2}\.[0-9]{1,2}.[0-9]{8}(-beta[0-9]*)?<\/version>/<version>${OPENCV_VERSION}.${yyyymmdd}${BETA}<\/version>/" \
${GITHUB_WORKSPACE}/nuget/OpenCvSharp4_.runtime.ubuntu.20.04-x64.nuspec
cat ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4_.runtime.ubuntu.20.04-x64.nuspec
dotnet pack ${GITHUB_WORKSPACE}/nuget/OpenCvSharp4_.runtime.ubuntu.20.04-x64.csproj -o ${GITHUB_WORKSPACE}/artifacts_ubuntu
ls ${GITHUB_WORKSPACE}/artifacts_ubuntu

- uses: actions/upload-artifact@v3
Expand Down
6 changes: 4 additions & 2 deletions docker/ubuntu22-dotnet6-opencv4.7.0/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ RUN apt-get update && apt-get -y install --no-install-recommends \
x264 \
libtesseract-dev \
libgdiplus \
libssl-dev \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*

Expand Down Expand Up @@ -97,7 +96,9 @@ 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 ##########
Expand Down Expand Up @@ -158,3 +159,4 @@ RUN dotnet test /opencvsharp/test/OpenCvSharp.Tests/OpenCvSharp.Tests.csproj -c

FROM mcr.microsoft.com/dotnet/aspnet:6.0-jammy as final
COPY --from=builder /usr/lib /usr/lib
COPY --from=builder /artifacts /artifacts
159 changes: 159 additions & 0 deletions docker/ubuntu22-dotnet6sdk-opencv4.7.0/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
FROM mcr.microsoft.com/dotnet/aspnet:6.0-jammy as builder

ENV DEBIAN_FRONTEND=noninteractive
ENV OPENCV_VERSION=4.7.0

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-dev \
libxine2-dev \
libv4l-dev \
libtheora-dev \
libvorbis-dev \
libxvidcore-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
x264 \
libtesseract-dev \
libgdiplus \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*

# Setup opencv and opencv-contrib source
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 -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

# 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-jammy
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 <stdio.h> \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-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
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-jammy as final
COPY --from=builder /usr/lib /usr/lib
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp2.1;</TargetFrameworks>
<NoBuild>true</NoBuild>
<IncludeBuildOutput>false</IncludeBuildOutput>
<NuspecFile>OpenCvSharp4.runtime.ubuntu.20.04-x64.nuspec</NuspecFile>
<NuspecFile>OpenCvSharp4_.runtime.ubuntu.20.04-x64.nuspec</NuspecFile>
<NuspecProperties></NuspecProperties>
<NuspecBasePath></NuspecBasePath>
<!--<IncludeSymbols>true</IncludeSymbols>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>OpenCvSharp4.runtime.ubuntu.20.04-x64</id>
<id>OpenCvSharp4_.runtime.ubuntu.20.04-x64</id>
<version>4.6.0.20220608</version>
<title>OpenCvSharp native bindings for ubuntu.20.04-x64</title>
<authors>shimat</authors>
Expand Down