Skip to content

Commit 9d1449f

Browse files
committed
Merge branch 'catch-exceptions'
2 parents 7a4814c + 33a5411 commit 9d1449f

File tree

144 files changed

+27971
-19825
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

144 files changed

+27971
-19825
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: build for catch exceptions
2+
3+
on:
4+
push:
5+
branches: ["catch-exceptions"]
6+
pull_request:
7+
branches: [ "catch-exceptions" ]
8+
9+
env:
10+
ANDROID_NDK_VERSION: r26c
11+
OPENCV_VERSION: 4.9.0
12+
LIB_NAME: libopencv_dart
13+
14+
jobs:
15+
build-ubuntu:
16+
name: build-ubuntu
17+
runs-on: ubuntu-latest
18+
19+
steps:
20+
- name: setup
21+
run: |
22+
sudo apt-get update
23+
sudo apt-get install -y curl git wget python3 unzip build-essential \
24+
libgtk-3-dev ffmpeg libavcodec-dev \
25+
cmake ninja-build ccache nasm libavformat-dev libavutil-dev \
26+
libswscale-dev libgflags-dev \
27+
libjpeg-dev libpng-dev libtiff-dev python3-pip
28+
29+
python3 -m pip install conan
30+
conan profile detect -f
31+
32+
- uses: actions/checkout@v4
33+
with:
34+
submodules: true
35+
- name: build-opencv-dart
36+
run: |
37+
conan build . -b missing -c tools.cmake.cmaketoolchain:generator=Ninja
38+
- uses: subosito/flutter-action@v2
39+
with:
40+
# flutter-version: '3.16.9'
41+
channel: "stable"
42+
- uses: actions/upload-artifact@v4
43+
name: upload-linux-x64
44+
with:
45+
path: build/publish/libopencv_dart-linux-x64.tar.gz
46+
name: libopencv_dart-linux-x64.tar.gz
47+
- name: Run Test
48+
run: |
49+
export LD_LIBRARY_PATH="${{github.workspace}}/linux:$LD_LIBRARY_PATH"
50+
flutter pub get
51+
flutter test -x skip-workflow,no-local-files

.github/workflows/build_test.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ jobs:
168168
submodules: true
169169
- name: setup
170170
run: |
171-
brew install --force --overwrite ninja ffmpeg nasm conan
171+
brew install --force --overwrite ninja ccache ffmpeg nasm conan
172172
conan profile detect -f
173173
cd ${{github.workspace}}
174174
- name: build
@@ -208,7 +208,7 @@ jobs:
208208
- name: setup
209209
run: |
210210
# brew update
211-
brew install --force --overwrite ninja ffmpeg nasm conan
211+
brew install --force --overwrite ninja ccache ffmpeg nasm conan
212212
conan profile detect -f
213213
cd ${{github.workspace}}
214214
- name: build
@@ -248,7 +248,7 @@ jobs:
248248
submodules: true
249249
- name: setup
250250
run: |
251-
brew install --force --overwrite ninja nasm conan
251+
brew install --force --overwrite ninja ccache nasm conan
252252
conan profile detect -f
253253
cd ${{github.workspace}}
254254
- name: build

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ test/models/
2626
*.dylib
2727
CMakeUserPresets*
2828
*.framework
29+
.clang-format
30+
CMakePresets.json
2931

3032
# Files and directories created by pub
3133
.dart_tool/

CMakeLists.txt

Lines changed: 97 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
cmake_minimum_required(VERSION 3.15)
22

33
project(opencv_dart_library VERSION 0.0.1 LANGUAGES C CXX)
4-
set(library_name "opencv_dart")
4+
set(LIBRARY_NAME "opencv_dart")
55

6+
set(CMAKE_CXX_STANDARD 20)
7+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
68
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
9+
cmake_policy(SET CMP0135 NEW)
710

811
find_package(OpenCV REQUIRED)
912

1013
set(OpenCV_LIBS
1114
opencv_aruco opencv_core opencv_calib3d opencv_dnn opencv_highgui
12-
opencv_features2d opencv_photo opencv_imgproc opencv_img_hash
15+
opencv_features2d opencv_gapi opencv_photo opencv_imgproc
1316
opencv_objdetect opencv_video opencv_videoio opencv_stitching
17+
opencv_img_hash
1418
)
1519

1620
if(ANDROID)
@@ -31,36 +35,43 @@ message(STATUS " version: ${OpenCV_VERSION}")
3135
message(STATUS " libraries: ${OpenCV_LIBS}")
3236
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
3337

34-
file(GLOB GOCV_FILES
35-
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
36-
37-
# "${CMAKE_CURRENT_SOURCE_DIR}/gocv/contrib/*.cpp"
38+
file(GLOB_RECURSE CPP_FILES
39+
"${CMAKE_CURRENT_SOURCE_DIR}/src/**/*.cpp"
40+
41+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/calib3d/*.cpp"
42+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/core/*.cpp"
43+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/dnn/*.cpp"
44+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/extra/*.cpp"
45+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/highgui/*.cpp"
46+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/imgcodecs/*.cpp"
47+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/imgproc/*.cpp"
48+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/objdetect/*.cpp"
49+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/photo/*.cpp"
50+
# "${CMAKE_CURRENT_SOURCE_DIR}/src/stitching/*.cpp"
3851
)
39-
file(GLOB GOCV_HEADERS
52+
file(GLOB_RECURSE HEADER_FILES
4053
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.h"
41-
42-
# "${CMAKE_CURRENT_SOURCE_DIR}/gocv/contrib/*.cpp"
4354
)
4455

45-
add_library(${library_name} SHARED
46-
${GOCV_FILES}
56+
add_library(${LIBRARY_NAME} SHARED
57+
${CPP_FILES}
4758
)
48-
target_include_directories(${library_name} SYSTEM PUBLIC
59+
target_include_directories(${LIBRARY_NAME} SYSTEM PUBLIC
4960
"${CMAKE_CURRENT_SOURCE_DIR}/src"
5061
${OpenCV_INCLUDE_DIRS}
5162
)
52-
target_link_libraries(${library_name} PRIVATE ${OpenCV_LIBS})
63+
target_link_libraries(${LIBRARY_NAME} PRIVATE ${OpenCV_LIBS})
5364

54-
set_target_properties(${library_name} PROPERTIES
65+
set_target_properties(${LIBRARY_NAME} PROPERTIES
5566
# PUBLIC_HEADER ${GOCV_HEADERS}
56-
OUTPUT_NAME ${library_name}
67+
OUTPUT_NAME ${LIBRARY_NAME}
5768
CXX_VISIBILITY_PRESET default
5869
C_VISIBILITY_PRESET default
5970
LINK_FLAGS_RELEASE -s
6071
)
6172

6273
if(IOS)
63-
set_target_properties(${library_name} PROPERTIES
74+
set_target_properties(${LIBRARY_NAME} PROPERTIES
6475
FRAMEWORK TRUE
6576
FRAMEWORK_VERSION CXX
6677
MACOSX_FRAMEWORK_IDENTIFIER dev.rainyl.opencvDart
@@ -71,28 +82,16 @@ endif(IOS)
7182

7283

7384
if(WIN32)
74-
set_target_properties(${library_name} PROPERTIES
85+
set_target_properties(${LIBRARY_NAME} PROPERTIES
7586
WINDOWS_EXPORT_ALL_SYMBOLS ON
87+
COMPILE_FLAGS "/EHsc"
7688
)
7789
endif(WIN32)
7890

79-
target_compile_definitions(${library_name} PUBLIC DART_SHARED_LIB)
80-
81-
if(WITH_OPENCV_DART_DEMO)
82-
add_executable(
83-
demo
84-
"src/demo.cxx"
85-
)
86-
target_link_libraries(
87-
demo
88-
PUBLIC
89-
${OpenCV_LIBS}
90-
${library_name}
91-
)
92-
endif()
91+
target_compile_definitions(${LIBRARY_NAME} PUBLIC DART_SHARED_LIB)
9392

94-
# ## install
95-
install(TARGETS ${library_name}
93+
### install
94+
install(TARGETS ${LIBRARY_NAME}
9695
DESTINATION ${CMAKE_INSTALL_PREFIX})
9796

9897
if(WIN32)
@@ -104,3 +103,68 @@ elseif(LINUX)
104103
endif()
105104

106105
install(FILES ${CV_DEPENDENCIES} DESTINATION ${CMAKE_INSTALL_PREFIX})
106+
107+
if(CVD_ENABLE_TEST)
108+
### test
109+
include(FetchContent)
110+
FetchContent_Declare(
111+
googletest
112+
URL https://github.com/google/googletest/archive/refs/heads/main.zip
113+
)
114+
# For Windows: Prevent overriding the parent project's compiler/linker settings
115+
if(WIN32)
116+
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
117+
endif(WIN32)
118+
FetchContent_MakeAvailable(googletest)
119+
# copy test images
120+
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/test)
121+
file(COPY
122+
"${CMAKE_CURRENT_SOURCE_DIR}/test/images"
123+
DESTINATION ${CMAKE_BINARY_DIR}/test
124+
)
125+
# model files for DNN test
126+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/models")
127+
file(COPY
128+
"${CMAKE_CURRENT_SOURCE_DIR}/test/models"
129+
DESTINATION ${CMAKE_BINARY_DIR}/test
130+
)
131+
endif()
132+
133+
enable_testing()
134+
135+
macro(add_ocv_dart_test executable_name source_file)
136+
add_executable(
137+
${executable_name}
138+
"${source_file}"
139+
)
140+
141+
target_link_libraries(
142+
${executable_name}
143+
PUBLIC
144+
${OpenCV_LIBS}
145+
${LIBRARY_NAME}
146+
GTest::gtest_main
147+
)
148+
149+
if(WIN32)
150+
set_target_properties(${executable_name} PROPERTIES
151+
COMPILE_FLAGS "/EHsc"
152+
)
153+
endif(WIN32)
154+
endmacro()
155+
156+
add_ocv_dart_test(ocv_dart_test_vec "src/test/vec.cc")
157+
add_ocv_dart_test(ocv_dart_test_core "src/test/core.cc")
158+
add_ocv_dart_test(ocv_dart_test_calib3d "src/test/calib3d.cc")
159+
add_ocv_dart_test(ocv_dart_test_dnn "src/test/dnn.cc")
160+
add_ocv_dart_test(ocv_dart_test_imgcodecs "src/test/imgcodecs.cc")
161+
add_ocv_dart_test(ocv_dart_test_imgproc "src/test/imgproc.cc")
162+
163+
include(GoogleTest)
164+
gtest_discover_tests(ocv_dart_test_vec)
165+
gtest_discover_tests(ocv_dart_test_core)
166+
gtest_discover_tests(ocv_dart_test_calib3d)
167+
gtest_discover_tests(ocv_dart_test_dnn)
168+
gtest_discover_tests(ocv_dart_test_imgcodecs)
169+
gtest_discover_tests(ocv_dart_test_imgproc)
170+
endif()

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,10 @@ This package is in heavy development, dynamic libraries for Windows and linux ha
202202

203203
- `gocv` project: <https://github.com/hybridgroup/gocv> License: Apache-2.0
204204

205+
## Star History
206+
207+
[![Star History Chart](https://api.star-history.com/svg?repos=rainyl/opencv_dart&type=Date)](https://star-history.com/#rainyl/opencv_dart&Date)
208+
205209
## License
206210

207211
Apache-2.0 License

example/lib/main.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,8 @@ class _MyAppState extends State<MyApp> {
113113
.load("images/lenna.png");
114114
final im =
115115
cv.imdecode(data.buffer.asUint8List(), cv.IMREAD_COLOR);
116-
final gray = cv.Mat.empty();
117-
cv.cvtColor(im, gray, cv.COLOR_BGR2GRAY);
118-
final blur = cv.Mat.empty();
119-
cv.gaussianBlur(im, blur, (7, 7), 2, sigmaY: 2);
116+
final gray = cv.cvtColor(im, cv.COLOR_BGR2GRAY);
117+
final blur = cv.gaussianBlur(im, (7, 7), 2, sigmaY: 2);
120118
setState(() {
121119
images = [
122120
data.buffer.asUint8List(),

0 commit comments

Comments
 (0)