1

移植到 JavaScript:“无法注册公共名称 'projectPoints' 两次”

我做了以下事情:

  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_calib3d设置为ON

  5. 我添加了以下 def get_cmake_cmd(self): 的 opencv/platforms/js/build_js.py:-DOPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules

  6. js在 opencv/modules/calib3d/CMakeLists.txt 的 WRAP 列表末尾附加了 ocv_define_module。在 opencv/modules/features2d/CMakeLists.txt 和 opencv_contrib/modules/aruco/CMakeLists.txt 中,我还在 ocv_define_module 中添加了“js”参数。

  7. solvePnP在 opencv/modules/js/src/embindgen.py 的 calib3d 模块中添加了和“projectPoints”

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

  1. 我将 calib3d 模块添加到 opencv/modules/js/src/embindgen.py 中的 makeWhiteList

white_list = makeWhiteList([核心,imgproc,objdetect,视频,dnn,features2d,照片,aruco,calib3d])

  1. 我添加了“使用命名空间 aruco;” 在 opencv/modules/js/src/core_bindings.cpp

  2. 我使用以下命令构建了 OpenCV.js: sudo python ./platforms/js/build_js.py build_js --emscripten_dir=${ESCRIPTEN} --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