Skip to content

Refreshed JavaScript bindings for Aruco related algorithms#23725

Merged
asmorkalov merged 1 commit intoopencv:4.xfrom
asmorkalov:as/aruco_js_refresh
Jun 10, 2023
Merged

Refreshed JavaScript bindings for Aruco related algorithms#23725
asmorkalov merged 1 commit intoopencv:4.xfrom
asmorkalov:as/aruco_js_refresh

Conversation

@asmorkalov
Copy link
Copy Markdown
Contributor

@asmorkalov asmorkalov commented Jun 1, 2023

Try to address #23723

Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake
build_image:Docs=docs-js:18.04
build_image:Custom=javascript
buildworker:Custom=linux-1,linux-4,linux-f1

@damianofalcioni
Copy link
Copy Markdown
Contributor

Hi, I tried to compile this PR but receive the following errors (after fixing the previously mentioned syntax error):

/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3488:120: error: unknown type name 'Board'
    void aruco_ArucoDetector_refineDetectedMarkers_wrapper(cv::aruco::ArucoDetector& arg0 , const cv::Mat& arg1, const Board& arg2, std::vector<cv::Mat>& arg3, cv::Mat& arg4, std::vector<cv::Mat>& arg5, const cv::Mat& arg6, const cv::Mat& arg7, cv::Mat& arg8) {
                                                                                                                       ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3492:122: error: unknown type name 'Board'
    void aruco_ArucoDetector_refineDetectedMarkers_wrapper_1(cv::aruco::ArucoDetector& arg0 , const cv::Mat& arg1, const Board& arg2, std::vector<cv::Mat>& arg3, cv::Mat& arg4, std::vector<cv::Mat>& arg5, const cv::Mat& arg6, const cv::Mat& arg7) {
                                                                                                                         ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3496:122: error: unknown type name 'Board'
    void aruco_ArucoDetector_refineDetectedMarkers_wrapper_2(cv::aruco::ArucoDetector& arg0 , const cv::Mat& arg1, const Board& arg2, std::vector<cv::Mat>& arg3, cv::Mat& arg4, std::vector<cv::Mat>& arg5, const cv::Mat& arg6) {
                                                                                                                         ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3500:122: error: unknown type name 'Board'
    void aruco_ArucoDetector_refineDetectedMarkers_wrapper_3(cv::aruco::ArucoDetector& arg0 , const cv::Mat& arg1, const Board& arg2, std::vector<cv::Mat>& arg3, cv::Mat& arg4, std::vector<cv::Mat>& arg5) {
                                                                                                                         ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3504:99: error: unknown type name 'DetectorParameters'; did you mean 'cv::aruco::DetectorParameters'?
    void aruco_ArucoDetector_setDetectorParameters_wrapper(cv::aruco::ArucoDetector& arg0 , const DetectorParameters& arg1) {
                                                                                                  ^~~~~~~~~~~~~~~~~~
                                                                                                  cv::aruco::DetectorParameters
/src/modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp:25:28: note: 'cv::aruco::DetectorParameters' declared here
struct CV_EXPORTS_W_SIMPLE DetectorParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3508:91: error: unknown type name 'Dictionary'; did you mean 'cv::aruco::Dictionary'?
    void aruco_ArucoDetector_setDictionary_wrapper(cv::aruco::ArucoDetector& arg0 , const Dictionary& arg1) {
                                                                                          ^~~~~~~~~~
                                                                                          cv::aruco::Dictionary
/src/modules/objdetect/include/opencv2/objdetect/aruco_board.hpp:14:7: note: 'cv::aruco::Dictionary' declared here
class Dictionary;
      ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3512:97: error: unknown type name 'RefineParameters'; did you mean 'cv::aruco::RefineParameters'?
    void aruco_ArucoDetector_setRefineParameters_wrapper(cv::aruco::ArucoDetector& arg0 , const RefineParameters& arg1) {
                                                                                                ^~~~~~~~~~~~~~~~
                                                                                                cv::aruco::RefineParameters
/src/modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp:205:28: note: 'cv::aruco::RefineParameters' declared here
struct CV_EXPORTS_W_SIMPLE RefineParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3548:90: error: unknown type name 'CharucoBoard'; did you mean 'cv::aruco::CharucoBoard'?
    void aruco_CharucoDetector_setBoard_wrapper(cv::aruco::CharucoDetector& arg0 , const CharucoBoard& arg1) {
                                                                                         ^~~~~~~~~~~~
                                                                                         cv::aruco::CharucoBoard
/src/modules/objdetect/include/opencv2/objdetect/aruco_board.hpp:135:27: note: 'cv::aruco::CharucoBoard' declared here
class CV_EXPORTS_W_SIMPLE CharucoBoard : public Board {
                          ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3552:96: error: unknown type name 'CharucoParameters'; did you mean 'cv::aruco::CharucoParameters'?
    void aruco_CharucoDetector_setCharucoParameters_wrapper(cv::aruco::CharucoDetector& arg0 , CharucoParameters& arg1) {
                                                                                               ^~~~~~~~~~~~~~~~~
                                                                                               cv::aruco::CharucoParameters
/src/modules/objdetect/include/opencv2/objdetect/charuco_detector.hpp:15:28: note: 'cv::aruco::CharucoParameters' declared here
struct CV_EXPORTS_W_SIMPLE CharucoParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3556:103: error: unknown type name 'DetectorParameters'; did you mean 'cv::aruco::DetectorParameters'?
    void aruco_CharucoDetector_setDetectorParameters_wrapper(cv::aruco::CharucoDetector& arg0 , const DetectorParameters& arg1) {
                                                                                                      ^~~~~~~~~~~~~~~~~~
                                                                                                      cv::aruco::DetectorParameters
/src/modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp:25:28: note: 'cv::aruco::DetectorParameters' declared here
struct CV_EXPORTS_W_SIMPLE DetectorParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3560:101: error: unknown type name 'RefineParameters'; did you mean 'cv::aruco::RefineParameters'?
    void aruco_CharucoDetector_setRefineParameters_wrapper(cv::aruco::CharucoDetector& arg0 , const RefineParameters& arg1) {
                                                                                                    ^~~~~~~~~~~~~~~~
                                                                                                    cv::aruco::RefineParameters
/src/modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp:205:28: note: 'cv::aruco::RefineParameters' declared here
struct CV_EXPORTS_W_SIMPLE RefineParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3572:90: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
    Mat aruco_Dictionary_getBitsFromByteList_wrapper(cv::aruco::Dictionary& arg0 , const const cv::Mat&& arg1, int arg2) {
                                                                                         ^~~~~~
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:3576:90: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
    Mat aruco_Dictionary_getByteListFromBits_wrapper(cv::aruco::Dictionary& arg0 , const const cv::Mat&& arg1) {
                                                                                         ^~~~~~
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4973:60: error: use of undeclared identifier 'DetectorParameters'; did you mean 'cv::aruco::DetectorParameters'?
        .function("getDetectorParameters", select_overload<DetectorParameters()const>(&cv::aruco::ArucoDetector::getDetectorParameters))
                                                           ^
/src/modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp:25:28: note: 'cv::aruco::DetectorParameters' declared here
struct CV_EXPORTS_W_SIMPLE DetectorParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4973:80: error: expected '>'
        .function("getDetectorParameters", select_overload<DetectorParameters()const>(&cv::aruco::ArucoDetector::getDetectorParameters))
                                                                               ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4973:59: note: to match this '<'
        .function("getDetectorParameters", select_overload<DetectorParameters()const>(&cv::aruco::ArucoDetector::getDetectorParameters))
                                                          ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4974:52: error: use of undeclared identifier 'Dictionary'; did you mean 'cv::aruco::Dictionary'?
        .function("getDictionary", select_overload<Dictionary()const>(&cv::aruco::ArucoDetector::getDictionary))
                                                   ^
/src/modules/objdetect/include/opencv2/objdetect/aruco_board.hpp:14:7: note: 'cv::aruco::Dictionary' declared here
class Dictionary;
      ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4974:64: error: expected '>'
        .function("getDictionary", select_overload<Dictionary()const>(&cv::aruco::ArucoDetector::getDictionary))
                                                               ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4974:51: note: to match this '<'
        .function("getDictionary", select_overload<Dictionary()const>(&cv::aruco::ArucoDetector::getDictionary))
                                                  ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4975:58: error: use of undeclared identifier 'RefineParameters'; did you mean 'cv::aruco::RefineParameters'?
        .function("getRefineParameters", select_overload<RefineParameters()const>(&cv::aruco::ArucoDetector::getRefineParameters))
                                                         ^
/src/modules/objdetect/include/opencv2/objdetect/aruco_detector.hpp:205:28: note: 'cv::aruco::RefineParameters' declared here
struct CV_EXPORTS_W_SIMPLE RefineParameters {
                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4975:76: error: expected '>'
        .function("getRefineParameters", select_overload<RefineParameters()const>(&cv::aruco::ArucoDetector::getRefineParameters))
                                                                           ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4975:57: note: to match this '<'
        .function("getRefineParameters", select_overload<RefineParameters()const>(&cv::aruco::ArucoDetector::getRefineParameters))
                                                        ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4976:112: error: unknown type name 'Board'
        .function("refineDetectedMarkers", select_overload<void(cv::aruco::ArucoDetector&,const cv::Mat&,const Board&,std::vector<cv::Mat>&,cv::Mat&,std::vector<cv::Mat>&,const cv::Mat&,const cv::Mat&,cv::Mat&)>(&Wrappers::aruco_ArucoDetector_refineDetectedMarkers_wrapper))
                                                                                                               ^
/src/build_js/modules/js_bindings_generator/gen/bindings.cpp:4977:112: error: unknown type name 'Board'
        .function("refineDetectedMarkers", select_overload<void(cv::aruco::ArucoDetector&,const cv::Mat&,const Board&,std::vector<cv::Mat>&,cv::Mat&,std::vector<cv::Mat>&,const cv::Mat&,const cv::Mat&)>(&Wrappers::aruco_ArucoDetector_refineDetectedMarkers_wrapper_1))
                                                                                                               ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.

@asmorkalov asmorkalov force-pushed the as/aruco_js_refresh branch 15 times, most recently from 2e0cee0 to f54c46c Compare June 8, 2023 11:40
@asmorkalov
Copy link
Copy Markdown
Contributor Author

@damianofalcioni I fixed several issues with Aruco export to JS and added couple of tests. Please take a look.

@asmorkalov asmorkalov self-assigned this Jun 8, 2023
@asmorkalov asmorkalov added this to the 4.8.0 milestone Jun 8, 2023
@asmorkalov asmorkalov requested a review from opencv-alalek June 9, 2023 06:45
@asmorkalov
Copy link
Copy Markdown
Contributor Author

@opencv-alalek could you take a look?

@damianofalcioni
Copy link
Copy Markdown
Contributor

damianofalcioni commented Jun 9, 2023

Thanks @asmorkalov for fixing this issue. The marker recognition work for me.

@asmorkalov asmorkalov force-pushed the as/aruco_js_refresh branch from f54c46c to 6148888 Compare June 9, 2023 12:44
@asmorkalov asmorkalov merged commit 6ca697b into opencv:4.x Jun 10, 2023
@asmorkalov asmorkalov mentioned this pull request Jul 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants