Skip to content

Commit c34792d

Browse files
committed
2 parents 8904c9f + 3f363a0 commit c34792d

File tree

2 files changed

+208
-23
lines changed

2 files changed

+208
-23
lines changed

.github/workflows/build.yml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ env:
1313
jobs:
1414
build:
1515
name: Build All
16-
runs-on: 'ubuntu-latest'
16+
runs-on: ubuntu-latest
1717

1818
steps:
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
1922
- name: Install Dependencies
2023
run: |
2124
echo "Installing dependencies..."
@@ -27,15 +30,13 @@ jobs:
2730
repository: opencv/opencv
2831
ref: ${{ env.OPENCV_VERSION }}
2932
path: opencv
30-
fetch-depth: 1
3133

3234
- name: Checkout OpenCV Contrib repo
3335
uses: actions/checkout@v4
3436
with:
3537
repository: opencv/opencv_contrib
3638
ref: ${{ env.OPENCV_VERSION }}
3739
path: opencv_contrib
38-
fetch-depth: 1
3940

4041
- name: Configure OpenCV
4142
run: |
@@ -79,24 +80,11 @@ jobs:
7980
repository: shimat/opencvsharp
8081
ref: ${{ env.OPENCVSHARP_VERSION }}
8182
path: opencvsharp
82-
fetch-depth: 1
8383

8484
- name: Apply Patches
8585
run: |
86-
echo "::group::Patching include_opencv.h"
87-
sed -i '42s/.*/ /;44,70s/.*/ /' ${{ github.workspace }}/opencvsharp/src/OpenCvSharpExtern/include_opencv.h
88-
cat ${{ github.workspace }}/opencvsharp/src/OpenCvSharpExtern/include_opencv.h
89-
echo "::endgroup::"
90-
91-
echo "::group::Patching std_vector.h"
92-
sed -i '451,585s/.*/ /' ${{ github.workspace }}/opencvsharp/src/OpenCvSharpExtern/std_vector.h
93-
cat ${{ github.workspace }}/opencvsharp/src/OpenCvSharpExtern/std_vector.h
94-
echo "::endgroup::"
95-
96-
echo "::group::Patching CMakeLists.txt"
97-
sed -i '12s/.*/file(GLOB OPENCVSHARP_FILES core*.cpp imgp*.cpp imgc*.cpp std*.cpp)/' ${{ github.workspace }}/opencvsharp/src/OpenCvSharpExtern/CMakeLists.txt
98-
cat ${{ github.workspace }}/opencvsharp/src/OpenCvSharpExtern/CMakeLists.txt
99-
echo "::endgroup::"
86+
cd opencvsharp
87+
git apply ../eng/opencvsharp.patch
10088
10189
- name: Configure OpenCvSharp
10290
run: |
@@ -130,15 +118,14 @@ jobs:
130118
131119
- name: Run Test
132120
run: |
121+
export LD_LIBRARY_PATH=${{ github.workspace }}/opencvsharp/build/OpenCvSharpExtern:$LD_LIBRARY_PATH
133122
cd test && ./test
134123
135124
- name: Make artifacts
136125
run: |
137-
mkdir artifacts && cd artifacts && \
138-
cp -r ../opencv/build/lib/* . && \
139-
cp -r ../opencvsharp/build/lib/* . && \
140-
cp -r ../opencvsharp/build/bin/* . && \
141-
cp -r ../opencvsharp/build/include/* . && \
126+
mkdir artifacts && cd artifacts && mkdir lib test
127+
cp -r ../opencvsharp/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ./lib
128+
cp -r ../test/* ./test
142129
ls -lR
143130
144131
- name: Upload Artifacts

eng/opencvsharp.patch

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
diff --git a/src/OpenCvSharpExtern/CMakeLists.txt b/src/OpenCvSharpExtern/CMakeLists.txt
2+
index 4371d2f6..4863f49f 100644
3+
--- a/src/OpenCvSharpExtern/CMakeLists.txt
4+
+++ b/src/OpenCvSharpExtern/CMakeLists.txt
5+
@@ -9,7 +9,7 @@ IF(APPLE)
6+
link_directories(/usr/local/lib)
7+
ENDIF()
8+
9+
-file(GLOB OPENCVSHARP_FILES *.cpp)
10+
+file(GLOB OPENCVSHARP_FILES core*.cpp imgp*.cpp imgc*.cpp std*.cpp)
11+
12+
find_package(OpenCV REQUIRED)
13+
14+
diff --git a/src/OpenCvSharpExtern/include_opencv.h b/src/OpenCvSharpExtern/include_opencv.h
15+
index d65eb67e..e0f3e560 100644
16+
--- a/src/OpenCvSharpExtern/include_opencv.h
17+
+++ b/src/OpenCvSharpExtern/include_opencv.h
18+
@@ -39,35 +39,7 @@
19+
#include <opencv2/highgui/highgui_winrt.hpp>
20+
#endif
21+
#include <opencv2/core/utils/logger.hpp>
22+
-#include <opencv2/highgui/highgui_c.h>
23+
#include <opencv2/imgproc/imgproc_c.h>
24+
-#include <opencv2/shape.hpp>
25+
-#include <opencv2/stitching.hpp>
26+
-#include <opencv2/video.hpp>
27+
-#ifndef _WINRT_DLL
28+
-#include <opencv2/superres.hpp>
29+
-#include <opencv2/superres/optical_flow.hpp>
30+
-#endif
31+
-
32+
-// opencv_contrib
33+
-#include <opencv2/aruco.hpp>
34+
-#include <opencv2/aruco/charuco.hpp>
35+
-#include <opencv2/bgsegm.hpp>
36+
-#include <opencv2/img_hash.hpp>
37+
-#include <opencv2/line_descriptor.hpp>
38+
-#include <opencv2/optflow.hpp>
39+
-#include <opencv2/quality.hpp>
40+
-#include <opencv2/tracking.hpp>
41+
-#include <opencv2/xfeatures2d.hpp>
42+
-#include <opencv2/ximgproc.hpp>
43+
-#include <opencv2/xphoto.hpp>
44+
-#ifndef _WINRT_DLL
45+
-#include <opencv2/wechat_qrcode.hpp>
46+
-#include <opencv2/dnn.hpp>
47+
-#include <opencv2/dnn_superres.hpp>
48+
-#include <opencv2/face.hpp>
49+
-#include <opencv2/text.hpp>
50+
-#endif
51+
52+
#include <vector>
53+
#include <algorithm>
54+
diff --git a/src/OpenCvSharpExtern/std_vector.h b/src/OpenCvSharpExtern/std_vector.h
55+
index b0699d03..2101b34b 100644
56+
--- a/src/OpenCvSharpExtern/std_vector.h
57+
+++ b/src/OpenCvSharpExtern/std_vector.h
58+
@@ -447,139 +447,3 @@ CVAPI(void) vector_Mat_delete(std::vector<cv::Mat>* vector)
59+
delete vector;
60+
}
61+
#pragma endregion
62+
-
63+
-#pragma region cv::ml::DTrees::Node
64+
-
65+
-CVAPI(std::vector<cv::ml::DTrees::Node>*) vector_DTrees_Node_new1()
66+
-{
67+
- return new std::vector<cv::ml::DTrees::Node>;
68+
-}
69+
-
70+
-CVAPI(size_t) vector_DTrees_Node_getSize(std::vector<cv::ml::DTrees::Node> *vector)
71+
-{
72+
- return vector->size();
73+
-}
74+
-
75+
-CVAPI(cv::ml::DTrees::Node*) vector_DTrees_Node_getPointer(std::vector<cv::ml::DTrees::Node> *vector)
76+
-{
77+
- return &(vector->at(0));
78+
-}
79+
-
80+
-CVAPI(void) vector_DTrees_Node_delete(std::vector<cv::ml::DTrees::Node> *vector)
81+
-{
82+
- delete vector;
83+
-}
84+
-
85+
-#pragma endregion
86+
-
87+
-#pragma region cv::ml::DTrees::Split
88+
-
89+
-CVAPI(std::vector<cv::ml::DTrees::Split>*) vector_DTrees_Split_new1()
90+
-{
91+
- return new std::vector<cv::ml::DTrees::Split>;
92+
-}
93+
-
94+
-CVAPI(size_t) vector_DTrees_Split_getSize(std::vector<cv::ml::DTrees::Split> *vector)
95+
-{
96+
- return vector->size();
97+
-}
98+
-
99+
-CVAPI(cv::ml::DTrees::Split*) vector_DTrees_Split_getPointer(std::vector<cv::ml::DTrees::Split> *vector)
100+
-{
101+
- return &(vector->at(0));
102+
-}
103+
-
104+
-CVAPI(void) vector_DTrees_Split_delete(std::vector<cv::ml::DTrees::Split> *vector)
105+
-{
106+
- delete vector;
107+
-}
108+
-
109+
-#pragma endregion
110+
-
111+
-#pragma region cv::detail::ImageFeatures
112+
-
113+
-CVAPI(std::vector<cv::detail::ImageFeatures>*) vector_ImageFeatures_new1()
114+
-{
115+
- return new std::vector<cv::detail::ImageFeatures>;
116+
-}
117+
-
118+
-CVAPI(size_t) vector_ImageFeatures_getSize(
119+
- std::vector<cv::detail::ImageFeatures>* vector)
120+
-{
121+
- return vector->size();
122+
-}
123+
-
124+
-CVAPI(void) vector_ImageFeatures_getKeypointsSize(
125+
- std::vector<cv::detail::ImageFeatures>* vector, size_t *dst)
126+
-{
127+
- for (size_t i = 0; i < vector->size(); i++)
128+
- {
129+
- dst[i] = vector->at(i).keypoints.size();
130+
- }
131+
-}
132+
-
133+
-CVAPI(void) vector_ImageFeatures_getElements(
134+
- std::vector<cv::detail::ImageFeatures>* vector, detail_ImageFeatures* dstArray)
135+
-{
136+
- for (size_t i = 0; i < vector->size(); i++)
137+
- {
138+
- const auto &src = vector->at(i);
139+
- auto &dst = dstArray[i];
140+
- dst.img_idx = src.img_idx;
141+
- dst.img_size = c(src.img_size);
142+
- //std::memcpy(dst.keypoints, &src.keypoints[0], sizeof(cv::KeyPoint)*src.keypoints.size());
143+
- std::copy(src.keypoints.begin(), src.keypoints.end(), std::back_inserter(*dst.keypoints));
144+
- src.descriptors.copyTo(*dst.descriptors);
145+
- }
146+
-}
147+
-
148+
-CVAPI(void) vector_ImageFeatures_delete(std::vector<cv::detail::ImageFeatures>* vector)
149+
-{
150+
- delete vector;
151+
-}
152+
-
153+
-#pragma endregion
154+
-
155+
-#pragma region cv::line_descriptor::KeyLine
156+
-#if 0
157+
-CVAPI(std::vector<cv::line_descriptor::KeyLine>*) vector_KeyLine_new1()
158+
-{
159+
- return new std::vector<cv::line_descriptor::KeyLine>;
160+
-}
161+
-
162+
-CVAPI(size_t) vector_KeyLine_getSize(std::vector<cv::line_descriptor::KeyLine>* vector)
163+
-{
164+
- return vector->size();
165+
-}
166+
-
167+
-/*
168+
-CVAPI(void) vector_KeyLine_getElements(
169+
- std::vector<cv::line_descriptor::KeyLine>* vector, line_descriptor_KeyLine* dst)
170+
-{
171+
- for (size_t i = 0; i < vector->size(); i++)
172+
- {
173+
- const auto &k = vector->at(i);
174+
- const line_descriptor_KeyLine kl{
175+
- k.angle, k.class_id, k.octave,
176+
- {k.pt.x, k.pt.y},
177+
- k.response, k.size,
178+
- k.startPointX, k.startPointY,
179+
- k.endPointX, k.endPointY,
180+
- k.sPointInOctaveX, k.sPointInOctaveY,
181+
- k.ePointInOctaveX, k.ePointInOctaveY,
182+
- k.lineLength, k.numOfPixels };
183+
- dst[i] = kl;
184+
- }
185+
-}*/
186+
-
187+
-CVAPI(cv::line_descriptor::KeyLine*) vector_KeyLine_getPointer(std::vector<cv::line_descriptor::KeyLine>* vector)
188+
-{
189+
- return &(vector->at(0));
190+
-}
191+
-
192+
-CVAPI(void) vector_KeyLine_delete(std::vector<cv::line_descriptor::KeyLine>* vector)
193+
-{
194+
- delete vector;
195+
-}
196+
-#endif
197+
-#pragma endregion
198+
\ No newline at end of file

0 commit comments

Comments
 (0)