1

JavaScript への移植: 「公開名 'projectPoints' を 2 回登録できません」

私は次のことをしました:

  1. git クローンhttps://github.com/opencv/opencv.git

  2. git クローンhttps://github.com/opencv/opencv_contrib.git

  3. opencv/platforms/js/build_js.py の def get_build_flags(self) に以下を追加しました: flags += "-s USE_PTHREADS=0 "

  4. def get_cmake_cmd(self): of opencv/platforms/js/build_js.py: -DBUILD_opencv_calib3dsetでビルド フラグを有効にしました。ON

  5. 次の def get_cmake_cmd(self): を opencv/platforms/js/build_js.py に追加しました。-DOPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules

  6. jsopencv/modules/calib3d/CMakeLists.txt の WRAP リストの末尾にある ocv_define_module 内に追加しました。opencv/modules/features2d/CMakeLists.txt と opencv_contrib/modules/aruco/CMakeLists.txt にも ocv_define_module に "js" パラメータを追加しました。

  7. solvePnPopencv/modules/js/src/embindgen.py の calib3d モジュールに「projectPoints」を追加しました

calib3d = {'': ['findHomography',' calibrationCameraExtended', 'drawFrameAxes', 'getDefaultNewCameraMatrix', 'initUndistortRectifyMap', 'solvePnP','projectPoints']}

  1. opencv/modules/js/src/embindgen.py の makeWhiteList に calib3d モジュールを追加しました

white_list = makeWhiteList([core, imgproc, objdetect, video, dnn, features2d, photo, aruco, calib3d])

  1. 「using namespace aruco;」を追加しました。opencv/modules/js/src/core_bindings.cpp で

  2. 次のコマンドを使用して OpenCV.js をビルドしました: sudo python ./platforms/js/build_js.py build_js --emscripten_dir=${EMSCRIPTEN} --clean_build_dir --build_test

これらのラッパーを追加する前は、エラーなしで完全にコンパイルされていました。私のtests.htmlには、次のメッセージがあります。

Downloading...
tests.html:61 Running...
tests.html:61 Exception thrown, see JavaScript console
opencv.js:24 Uncaught 
BindingError
message: "Cannot register public name 'projectPoints' twice"
name: "BindingError"
stack: "BindingError: Cannot register public name 'projectPoints' twice↵    at BindingError.<anonymous>

オーバーロード関数が JavaScript への移植を妨げているようです。

どうすれば修正できますか?

よろしくお願いします。

4

0 に答える 0