rainyl / opencv_dart

OpenCV bindings for Dart language and Flutter. Support Asynchronous Now!
https://pub.dev/packages/opencv_dart
Apache License 2.0
136 stars 18 forks source link

Add quality module #216

Closed amirkhaki closed 2 months ago

amirkhaki commented 3 months ago

Hello,

I'm currently trying to add quality module bindings to the project but I'm encountering an issue when building for Android.

I followed the workflow described in the CONTRIBUTION.md file:

When I build for Linux using conan build . -b missing, everything works fine and the .so file is built. However, when I try to use the functions I added in a Flutter Android project, I get an error: cannot load symbol MyAddedFunction.

When building for Android with conan build . -b missing -pr:h profiles/android-armv7, I encounter a linker error: error: undefined symbol: cv::quality::QualityBRISQUE::compute, which is the function I've written a wrapper for.

How can I resolve this error? Should I add the quality module to the opencv.full repository?

Thank you in advance for your help and for the great project!

abdelaziz-mahdy commented 3 months ago

maybe you missed this step? https://github.com/rainyl/opencv_dart?tab=readme-ov-file#4-test

also searching in https://github.com/rainyl/opencv.full/blob/main/conanfile.py i cant find the quality module, so i think yes it needs to be added

rainyl commented 3 months ago

Should I add the quality module to the opencv.full repository?

also searching in https://github.com/rainyl/opencv.full/blob/main/conanfile.py i cant find the quality module, so i think yes it needs to be added

Yes, quality is not include in opencv.full, so it can't find the symbols.

abdelaziz-mahdy commented 3 months ago

i will open a pr adding it

amirkhaki commented 3 months ago

Should I add the quality module to the opencv.full repository?

also searching in https://github.com/rainyl/opencv.full/blob/main/conanfile.py i cant find the quality module, so i think yes it needs to be added

Yes, quality is not include in opencv.full, so it can't find the symbols.

So i cloned and built opencv.full and set the OpenCV_DIR it still has the same problem of not finding quality (the quality module is built in opencv.full and i can see the object file but when building opencv_dart it still cannot find the symbol) there is no quality module object file in the link command printed in conan log

abdelaziz-mahdy commented 3 months ago

From what I know the opencv.full binaries with quality are not in the release, but since you cloned them then everything should be correct, so I don't know @rainyl we will need to add a section for correct steps in case of opencv.full changes

rainyl commented 3 months ago

So i cloned and built opencv.full and set the OpenCV_DIR it still has the same problem of not finding quality (the quality module is built in opencv.full and i can see the object file but when building opencv_dart it still cannot find the symbol) there is no quality module object file in the link command printed in conan log

@amirkhaki Have you add quality module to CMakeLists.txt? You can also explicitly pass -o opencv_dir=/path/to/opencv/with/.cmake/files to conan build. If it still can't find the symbols, you can open a PR so I can help you.

we will need to add a section for correct steps in case of opencv.full changes

@abdelaziz-mahdy Yes, some configurations have been changed since the build instructions was updated last time, the steps needs an update.

amirkhaki commented 3 months ago

Oh, i've not add quality module to CMakeLists.txt , I'll give it a try

rainyl commented 3 months ago

@amirkhaki 4.10.0+5 has been published, https://github.com/rainyl/opencv.full/releases/tag/4.10.0%2B5

You can change OPENCV_VERSION in conanfile.py to 4.10.0+5 to use it, without the need to build opencv.full by your self.

rainyl commented 2 months ago

@amirkhaki I am wondering have you finished quality module, if you have any problems or want to contribute, you can open a PR and we can help you.

If you are only for internal use, please ignore this comment and we are considering to add this module.