移植到 JavaScript:“无法注册公共名称 'projectPoints' 两次”
我做了以下事情:
我在 opencv/platforms/js/build_js.py 的 def get_build_flags(self) 中添加了以下内容: flags += "-s USE_PTHREADS=0 "
我在 def get_cmake_cmd(self): of opencv/platforms/js/build_js.py: 中启用了构建标志:
-DBUILD_opencv_calib3d
设置为ON
我添加了以下 def get_cmake_cmd(self): 的 opencv/platforms/js/build_js.py:
-DOPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules
我
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”参数。我
solvePnP
在 opencv/modules/js/src/embindgen.py 的 calib3d 模块中添加了和“projectPoints”
calib3d = {'':['findHomography','calibrateCameraExtended','drawFrameAxes','getDefaultNewCameraMatrix','initUndistortRectifyMap','solvePnP','projectPoints']}
- 我将 calib3d 模块添加到 opencv/modules/js/src/embindgen.py 中的 makeWhiteList
white_list = makeWhiteList([核心,imgproc,objdetect,视频,dnn,features2d,照片,aruco,calib3d])
我添加了“使用命名空间 aruco;” 在 opencv/modules/js/src/core_bindings.cpp
我使用以下命令构建了 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。
请问有什么建议可以解决吗?
在此先感谢您的帮助。