I've been working in a C++ Code which receives an image data (grayscale)
from the webcam and return the number of corners detected (Fast Corners) to
the javascript. To get success compiling the code I've download and
compiled opencv.js to create each one of the libraries using emscripten,
coded my own C++ class to get the image data, included OpenCV.hpp and boom.
Works amazingly fine.
My problem started when I decided to use OpenCV FeatureDetector. I'm able
to compile the code just including the header <opencv2/features2d.hpp> but
as soon as I insert an instruction from this module I got a link error.
The line of code triggering the link error is:
Ptr<FeatureDetector> detector = ORB::create();
I've recompiled OpenCV.js as WASM and the problem persists.
I've also ran the OpenCV.js tests and all of the components from this
module are working fine after compiling.
There is one weird thing though: when I run the "nm" command on the
compiled libs I got a "Bad section type" error, even the OpenCV.js tests
shows no error using the methods from this module.
My C++ code:
class MyCV {
public:
MTR(int width, int height) :
width(width),
height(height)
{}
int getWidth() const { return width; }
void setWidth(int w) { width = w; }
int getHeigth() const { return height; }
void setHeight(int h) { height = h; }
// get video pixels in grayscale from the heap
int image_input(intptr_t buffer, size_t nSize) //query image input
{
int *imagePixels = reinterpret_cast<int*>(buffer);
// convert to cv formatDigite o código aqui...
Mat raw_data = cv::Mat(1, nSize, CV_8UC1, imagePixels);
Mat img(640, 480, CV_8UC1, &raw_data);
// detect keypoints
std::vector<cv::KeyPoint> keypoints_fast;
Ptr<FeatureDetector> detector = ORB::create(); // <<<---- Here
I got the link error
return 1;
}
private:
int width;
int height;
};
EMSCRIPTEN_BINDINGS(my_module) {
class_<MyCV>("MyCV")
.constructor<int, int>()
.property("width", &MyCV::getWidth, &MyCV::setWidth)
.property("height", &MyCV::getHeigth, &MyCV::setHeight)
.function("image_input", &MyCV::image_input);
}
My CMakeLists.txt
set( CMAKE_CXX_STANDARD 11 )
cmake_minimum_required( VERSION 3.16 )
project( MyCV )
# Use C++ 11 by default
set( CMAKE_CXX_STANDARD 11 )
# Set Release as default build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)
file( GLOB opencv_include_modules
"/Users/dev/Documents/_Git/opencv/modules/*/include" )
include_directories( ${opencv_include_modules} )
include_directories( /Users/dev/Documents/_Git/opencv/include )
include_directories( /Users/dev/Documents/_Git/opencv/build_wasm )
add_executable( MyCV src/MyCV.cc )
file( GLOB opencv_libs_wasm
"/Users/dev/Documents/_Git/opencv/build_wasm/lib/*.a" )
target_link_libraries( MyCV ${opencv_libs_wasm} )
set(COMPILE_FLAGS "-Wno-missing-prototypes")
set_target_properties( MyCV PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS})
set(EMSCRIPTEN_LINK_FLAGS "${EMSCRIPTEN_LINK_FLAGS} -s WASM=1")
set(EMSCRIPTEN_LINK_FLAGS "${EMSCRIPTEN_LINK_FLAGS} --bind")
#set(EMSCRIPTEN_LINK_FLAGS "${EMSCRIPTEN_LINK_FLAGS} -s
LLD_REPORT_UNDEFINED")
set_target_properties( MyCV PROPERTIES LINK_FLAGS ${EMSCRIPTEN_LINK_FLAGS} )
The link error:
[100%] Linking CXX executable MyCV.js
error: undefined symbol: gzclose
warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on
undefined symbols
warning: To disable errors for undefined symbols use `-s
ERROR_ON_UNDEFINED_SYMBOLS=0`
error: undefined symbol: gzeof
error: undefined symbol: gzgets
error: undefined symbol: gzopen
error: undefined symbol: gzputs
error: undefined symbol: gzrewind
Error: Aborting compilation due to previous errors
shared:ERROR: '/Users/dev/Documents/_Git/emsdk/node/12.9.1_64bit/bin/node
/Users/dev/Documents/_Git/emsdk/upstream/emscripten/src/compiler.js
/var/folders/94/qc6kgl3x6r30g7y04t_9w4w00000gn/T/tmpDzc2sz.txt' failed (1)
make[2]: *** [MyCV.js] Error 1
make[1]: *** [CMakeFiles/MyCV.dir/all] Error 2
make: *** [all] Error 2
The message that comes from 'nm' command:
dev# nm libopencv_features2d.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(agast.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(agast_score.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(akaze.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(bagofwords.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(blobdetector.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(brisk.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(draw.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(dynamic.cpp.o) Unexpected metadata version: 2
(Expected: 1)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(evaluation.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(fast.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(fast_score.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(feature2d.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(gftt.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(kaze.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(AKAZEFeatures.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(KAZEFeatures.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(fed.cpp.o) Unexpected metadata version: 2
(Expected: 1)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(nldiffusion_functions.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(keypoint.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(main.cpp.o) Unexpected metadata version: 2
(Expected: 1)
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(matchers.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(mser.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(orb.cpp.o) Bad section type
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:
error: libopencv_features2d.a(opencl_kernels_features2d.cpp.o) Unexpected
metadata version: 2 (Expected: 1)
Thank you guys for any help.
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/23c4ecfd-daf2-47cc-9d62-79fd36c70e52%40googlegroups.com.