prophesee-ai / openeb

Open source SDK to create applications leveraging event-based vision hardware equipment
https://www.prophesee.ai/metavision-intelligence/
163 stars 35 forks source link

How to avoid opencv and gtk being linked to code #80

Closed ivangalysh closed 1 year ago

ivangalysh commented 1 year ago

I just downloaded the new openeb and recompiled my code that grabs events, reformats and passes the results to another program. It has been working with the older version of openeb. The newly compiled code is looking for opencv libraries and gtk libraries. How do I stop getting these libraries linked in when I don't use them. I am modifying the metavision_sdk_get_started.cpp

I have been cross compiling the code to operate on an ARM processor. I would like to use the new openeb since it has added the pixel masking.

Thanks Ivan

ogeorget-psee commented 1 year ago

Hi @ivangalysh, thanks for your feedback !

Could you please share the exact error you are getting, so we can better understand your issue ?

If you want to modify the linked libraries, you can have a look at the CMakeList.txt for the related app : https://github.com/prophesee-ai/openeb/blob/ea2cf58a636a6df85c607adc1c857d47c525474b/sdk/modules/core/cpp/samples/metavision_sdk_get_started/CMakeLists.txt#L11.

Getting rid of the dependency on opencv_highgui should also remove gtk as it's one of its dependencies.

ivangalysh commented 1 year ago

Sorry for the late response, I was on travel.

The error message when I run my program is: ./camera_h3: error while loading shared libraries: libopencv_highgui.so.4.5: cannot open shared object file: No such file or directory

I did remove opencv_highgui from the CmakeLIst.txt. I even removed it from the CmakeList.txt.install file.

Ivan

lbristiel-psee commented 1 year ago

Thanks for the feedback @ivangalysh There was indeed an error in SDK Get Started sample which was wrongly requiring OpenCV in CMake file. We fixed this in Release 4.0.1 See this commit: https://github.com/prophesee-ai/openeb/commit/09c57ca3a58c99ad515c548289eec6be9b4ae895#diff-029d0f0902bede65de5f460c0797cb1359579a5261018b6e09fe30b3bf5545f2

Is situation OK for you now? If so, can we close this issue?

ivangalysh commented 1 year ago

I tried again with the 4.0.1 and still getting the requirement for the opencv_highgui library. I ran ldd against the program and that library along with other opencv libraries are still listed.

I did delete the previous version and made sure to delete any installed files located in /usr/local/lib.

let me know where else I can look or if you need any files.

Thanks Ivan

ivangalysh commented 1 year ago

Here is the result of ldd on the program. It appears to want a large number of libraries. I recompiled the older version to see if I get the same result and it doesn't link in everything.

I tried this on two other computers and get the same results.

Ivan

galysh@galysh-virtual-machine:~/openeb/build$ ldd bin/metavision_sdk_get_started linux-vdso.so.1 (0x00007ffcdaa67000) libmetavision_sdk_driver.so.4 => /home/galysh/openeb/build/lib/libmetavision_sdk_driver.so.4 (0x00007f9dd1374000) libmetavision_sdk_ui.so.4 => /home/galysh/openeb/build/lib/libmetavision_sdk_ui.so.4 (0x00007f9dd1355000) libmetavision_sdk_core.so.4 => /home/galysh/openeb/build/lib/libmetavision_sdk_core.so.4 (0x00007f9dd130e000) libopencv_core.so.4.5d => /lib/x86_64-linux-gnu/libopencv_core.so.4.5d (0x00007f9dd0e00000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9dd0a00000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9dd12d3000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9dd0600000) libmetavision_hal_discovery.so.4 => /home/galysh/openeb/build/lib/libmetavision_hal_discovery.so.4 (0x00007f9dd12b2000) libboost_filesystem.so.1.74.0 => /lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 (0x00007f9dd1292000) libhdf5_serial_cpp.so.103 => /lib/x86_64-linux-gnu/libhdf5_serial_cpp.so.103 (0x00007f9dd121b000) libhdf5_serial.so.103 => /lib/x86_64-linux-gnu/libhdf5_serial.so.103 (0x00007f9dd0200000) libhdf5_ecf_codec.so.1 => /home/galysh/openeb/build/lib/libhdf5_ecf_codec.so.1 (0x00007f9dd1211000) libmetavision_hal.so.4 => /home/galysh/openeb/build/lib/libmetavision_hal.so.4 (0x00007f9dd11bb000) libmetavision_sdk_base.so.4 => /home/galysh/openeb/build/lib/libmetavision_sdk_base.so.4 (0x00007f9dd11a6000) libglfw.so.3 => /lib/x86_64-linux-gnu/libglfw.so.3 (0x00007f9dd0d99000) libGLEW.so.2.2 => /lib/x86_64-linux-gnu/libGLEW.so.2.2 (0x00007f9dd0cdb000) libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f9dd1170000) libOpenGL.so.0 => /lib/x86_64-linux-gnu/libOpenGL.so.0 (0x00007f9dd0caf000) libopencv_highgui.so.4.5d => /lib/x86_64-linux-gnu/libopencv_highgui.so.4.5d (0x00007f9dd0c7d000) libopencv_videoio.so.4.5d => /lib/x86_64-linux-gnu/libopencv_videoio.so.4.5d (0x00007f9dd097a000) libopencv_imgproc.so.4.5d => /lib/x86_64-linux-gnu/libopencv_imgproc.so.4.5d (0x00007f9dcfc00000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9dd0893000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9dd0c5f000) libtbb.so.2 => /lib/x86_64-linux-gnu/libtbb.so.2 (0x00007f9dd084d000) /lib64/ld-linux-x86-64.so.2 (0x00007f9dd1452000) libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f9dcf600000) libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f9dd0159000) libsz.so.2 => /lib/x86_64-linux-gnu/libsz.so.2 (0x00007f9dd0c5a000) libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f9dcfac0000) libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f9dcf579000) libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f9dcf4c1000) libopencv_imgcodecs.so.4.5d => /lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.5d (0x00007f9dd05a7000) libgtk-3.so.0 => /lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f9dcec00000) libgdk-3.so.0 => /lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f9dceaf9000) libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f9dce9d1000) libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f9dcfa90000) libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f9dcf461000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f9dce897000) libdc1394.so.25 => /lib/x86_64-linux-gnu/libdc1394.so.25 (0x00007f9dce81f000) libgstbase-1.0.so.0 => /lib/x86_64-linux-gnu/libgstbase-1.0.so.0 (0x00007f9dce79a000) libgstreamer-1.0.so.0 => /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007f9dce649000) libgstapp-1.0.so.0 => /lib/x86_64-linux-gnu/libgstapp-1.0.so.0 (0x00007f9dd0c3e000) libgstriff-1.0.so.0 => /lib/x86_64-linux-gnu/libgstriff-1.0.so.0 (0x00007f9dd0c2d000) libgstpbutils-1.0.so.0 => /lib/x86_64-linux-gnu/libgstpbutils-1.0.so.0 (0x00007f9dcfa4c000) libgstvideo-1.0.so.0 => /lib/x86_64-linux-gnu/libgstvideo-1.0.so.0 (0x00007f9dce584000) libavcodec.so.58 => /lib/x86_64-linux-gnu/libavcodec.so.58 (0x00007f9dcd000000) libavformat.so.58 => /lib/x86_64-linux-gnu/libavformat.so.58 (0x00007f9dccc00000) libavutil.so.56 => /lib/x86_64-linux-gnu/libavutil.so.56 (0x00007f9dcc800000) libswscale.so.5 => /lib/x86_64-linux-gnu/libswscale.so.5 (0x00007f9dce4e6000) libgphoto2.so.6 => /lib/x86_64-linux-gnu/libgphoto2.so.6 (0x00007f9dce461000) libgphoto2_port.so.12 => /lib/x86_64-linux-gnu/libgphoto2_port.so.12 (0x00007f9dd083f000) libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f9dd012f000) libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f9dcf440000) librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f9dce442000) libssh.so.4 => /lib/x86_64-linux-gnu/libssh.so.4 (0x00007f9dccf93000) libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f9dd0829000) libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007f9dcceef000) libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f9dcce9b000) libldap-2.5.so.0 => /lib/x86_64-linux-gnu/libldap-2.5.so.0 (0x00007f9dccba1000) liblber-2.5.so.0 => /lib/x86_64-linux-gnu/liblber-2.5.so.0 (0x00007f9dd0594000) libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f9dccad2000) libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f9dcf432000) libaec.so.0 => /lib/x86_64-linux-gnu/libaec.so.0 (0x00007f9dcfa43000) libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f9dce418000) libjpeg.so.8 => /lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f9dcc77f000) libwebp.so.7 => /lib/x86_64-linux-gnu/libwebp.so.7 (0x00007f9dcc713000) libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f9dcc6d8000) libgdcmMSFF.so.3.0 => /lib/x86_64-linux-gnu/libgdcmMSFF.so.3.0 (0x00007f9dcc4f0000) libtiff.so.5 => /lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f9dcc46a000) libopenjp2.so.7 => /lib/x86_64-linux-gnu/libopenjp2.so.7 (0x00007f9dcc412000) libIlmImf-2_5.so.25 => /lib/x86_64-linux-gnu/libIlmImf-2_5.so.25 (0x00007f9dcc000000) libgdal.so.30 => /lib/libgdal.so.30 (0x00007f9dca800000) libgdcmDSED.so.3.0 => /lib/x86_64-linux-gnu/libgdcmDSED.so.3.0 (0x00007f9dcc31a000) libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f9dcf429000) libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f9dccac0000) libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007f9dcc306000) libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f9dce40e000) libcairo-gobject.so.2 => /lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f9dcc2fa000) libatk-1.0.so.0 => /lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f9dcbfd6000) libatk-bridge-2.0.so.0 => /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f9dcbf9e000) libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f9dcbe69000) libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007f9dcc2de000) libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f9dca628000) libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f9dcbe4e000) libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f9dca5c1000) libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f9dca4f2000) libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f9dca4a8000) libXinerama.so.1 => /lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f9dccabb000) libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f9dcbe41000) libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f9dcbe35000) libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f9dcc2d9000) libXdamage.so.1 => /lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f9dcc2d4000) libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f9dca461000) libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f9dcbe2b000) libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f9dcbe26000) libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f9dcbe15000) libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f9dca44c000) libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f9dca3a1000) libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f9dca2d9000) libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f9dcbe10000) libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f9dca2ca000) libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f9dca2bd000) libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f9dca2b0000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9dca23a000) libraw1394.so.11 => /lib/x86_64-linux-gnu/libraw1394.so.11 (0x00007f9dca229000) libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007f9dca20b000) libunwind.so.8 => /lib/x86_64-linux-gnu/libunwind.so.8 (0x00007f9dca1f0000) libdw.so.1 => /lib/x86_64-linux-gnu/libdw.so.1 (0x00007f9dca144000) libgstaudio-1.0.so.0 => /lib/x86_64-linux-gnu/libgstaudio-1.0.so.0 (0x00007f9dca0c2000) libgsttag-1.0.so.0 => /lib/x86_64-linux-gnu/libgsttag-1.0.so.0 (0x00007f9dca080000) liborc-0.4.so.0 => /lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f9dc9ffb000) libswresample.so.3 => /lib/x86_64-linux-gnu/libswresample.so.3 (0x00007f9dc9fd9000) libvpx.so.7 => /lib/x86_64-linux-gnu/libvpx.so.7 (0x00007f9dc9c00000) libwebpmux.so.3 => /lib/x86_64-linux-gnu/libwebpmux.so.3 (0x00007f9dc9fcc000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f9dc9fa1000) libdav1d.so.5 => /lib/x86_64-linux-gnu/libdav1d.so.5 (0x00007f9dc9a7a000) librsvg-2.so.2 => /lib/x86_64-linux-gnu/librsvg-2.so.2 (0x00007f9dc8e00000) libzvbi.so.0 => /lib/x86_64-linux-gnu/libzvbi.so.0 (0x00007f9dc9f12000) libsnappy.so.1 => /lib/x86_64-linux-gnu/libsnappy.so.1 (0x00007f9dc9a70000) libaom.so.3 => /lib/x86_64-linux-gnu/libaom.so.3 (0x00007f9dc8800000) libcodec2.so.1.0 => /lib/x86_64-linux-gnu/libcodec2.so.1.0 (0x00007f9dc7800000) libgsm.so.1 => /lib/x86_64-linux-gnu/libgsm.so.1 (0x00007f9dc9a61000) libmp3lame.so.0 => /lib/x86_64-linux-gnu/libmp3lame.so.0 (0x00007f9dc99ec000) libopus.so.0 => /lib/x86_64-linux-gnu/libopus.so.0 (0x00007f9dc998e000) libshine.so.3 => /lib/x86_64-linux-gnu/libshine.so.3 (0x00007f9dc7400000) libspeex.so.1 => /lib/x86_64-linux-gnu/libspeex.so.1 (0x00007f9dc9970000) libtheoraenc.so.1 => /lib/x86_64-linux-gnu/libtheoraenc.so.1 (0x00007f9dc9938000) libtheoradec.so.1 => /lib/x86_64-linux-gnu/libtheoradec.so.1 (0x00007f9dc991a000) libtwolame.so.0 => /lib/x86_64-linux-gnu/libtwolame.so.0 (0x00007f9dc98f5000) libvorbis.so.0 => /lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007f9dc98c8000) libvorbisenc.so.2 => /lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007f9dc8755000) libx264.so.163 => /lib/x86_64-linux-gnu/libx264.so.163 (0x00007f9dc7000000) libx265.so.199 => /lib/x86_64-linux-gnu/libx265.so.199 (0x00007f9dc6000000) libxvidcore.so.4 => /lib/x86_64-linux-gnu/libxvidcore.so.4 (0x00007f9dc76ed000) libva.so.2 => /lib/x86_64-linux-gnu/libva.so.2 (0x00007f9dc8dcf000) libmfx.so.1 => /lib/x86_64-linux-gnu/libmfx.so.1 (0x00007f9dc98ba000) libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f9dc5e1e000) libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f9dc8dbc000) libgme.so.0 => /lib/x86_64-linux-gnu/libgme.so.0 (0x00007f9dc8705000) libopenmpt.so.0 => /lib/x86_64-linux-gnu/libopenmpt.so.0 (0x00007f9dc5c5d000) libchromaprint.so.1 => /lib/x86_64-linux-gnu/libchromaprint.so.1 (0x00007f9dc8dad000) libbluray.so.2 => /lib/x86_64-linux-gnu/libbluray.so.2 (0x00007f9dc86ae000) libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f9dc5a72000) librabbitmq.so.4 => /lib/x86_64-linux-gnu/librabbitmq.so.4 (0x00007f9dc8d93000) libsrt-gnutls.so.1.4 => /lib/x86_64-linux-gnu/libsrt-gnutls.so.1.4 (0x00007f9dc762e000) libssh-gcrypt.so.4 => /lib/x86_64-linux-gnu/libssh-gcrypt.so.4 (0x00007f9dc7376000) libzmq.so.5 => /lib/x86_64-linux-gnu/libzmq.so.5 (0x00007f9dc72da000) libva-drm.so.2 => /lib/x86_64-linux-gnu/libva-drm.so.2 (0x00007f9dc8d8e000) libva-x11.so.2 => /lib/x86_64-linux-gnu/libva-x11.so.2 (0x00007f9dc8d84000) libvdpau.so.1 => /lib/x86_64-linux-gnu/libvdpau.so.1 (0x00007f9dc8d7e000) libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f9dc7618000) libOpenCL.so.1 => /lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f9dc72c8000) libltdl.so.7 => /lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f9dc8d73000) libexif.so.12 => /lib/x86_64-linux-gnu/libexif.so.12 (0x00007f9dc6fb2000) libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f9dc58c8000) libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007f9dc6f6a000) libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007f9dc5882000) libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f9dc5800000) libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f9dc5735000) libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f9dc5706000) libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f9dc7612000) libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f9dc56f8000) libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f9dc56dd000) libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f9dc56ba000) libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f9dc760c000) libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f9dc56b2000) libgdcmDICT.so.3.0 => /lib/x86_64-linux-gnu/libgdcmDICT.so.3.0 (0x00007f9dc5200000) libgdcmjpeg8.so.3.0 => /lib/x86_64-linux-gnu/libgdcmjpeg8.so.3.0 (0x00007f9dc5688000) libgdcmjpeg12.so.3.0 => /lib/x86_64-linux-gnu/libgdcmjpeg12.so.3.0 (0x00007f9dc565e000) libgdcmjpeg16.so.3.0 => /lib/x86_64-linux-gnu/libgdcmjpeg16.so.3.0 (0x00007f9dc5634000) libcharls.so.2 => /lib/x86_64-linux-gnu/libcharls.so.2 (0x00007f9dc55e3000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f9dc55da000) libjson-c.so.5 => /lib/x86_64-linux-gnu/libjson-c.so.5 (0x00007f9dc55c7000) libgdcmIOD.so.3.0 => /lib/x86_64-linux-gnu/libgdcmIOD.so.3.0 (0x00007f9dc55b1000) libgdcmCommon.so.3.0 => /lib/x86_64-linux-gnu/libgdcmCommon.so.3.0 (0x00007f9dc558c000) libjbig.so.0 => /lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f9dc557b000) libdeflate.so.0 => /lib/x86_64-linux-gnu/libdeflate.so.0 (0x00007f9dc5557000) libImath-2_5.so.25 => /lib/x86_64-linux-gnu/libImath-2_5.so.25 (0x00007f9dc553f000) libIlmThread-2_5.so.25 => /lib/x86_64-linux-gnu/libIlmThread-2_5.so.25 (0x00007f9dc5535000) libHalf-2_5.so.25 => /lib/x86_64-linux-gnu/libHalf-2_5.so.25 (0x00007f9dc54f0000) libIex-2_5.so.25 => /lib/x86_64-linux-gnu/libIex-2_5.so.25 (0x00007f9dc5192000) libheif.so.1 => /lib/x86_64-linux-gnu/libheif.so.1 (0x00007f9dc510f000) libarmadillo.so.10 => /lib/libarmadillo.so.10 (0x00007f9dc54dc000) libpoppler.so.118 => /lib/x86_64-linux-gnu/libpoppler.so.118 (0x00007f9dc4c00000) libfreexl.so.1 => /lib/x86_64-linux-gnu/libfreexl.so.1 (0x00007f9dc54d0000) libqhull_r.so.8.0 => /lib/x86_64-linux-gnu/libqhull_r.so.8.0 (0x00007f9dc509c000) libgeos_c.so.1 => /lib/x86_64-linux-gnu/libgeos_c.so.1 (0x00007f9dc505d000) libodbc.so.2 => /lib/x86_64-linux-gnu/libodbc.so.2 (0x00007f9dc4fee000) libodbcinst.so.2 => /lib/x86_64-linux-gnu/libodbcinst.so.2 (0x00007f9dc4fd9000) libkmlbase.so.1 => /lib/x86_64-linux-gnu/libkmlbase.so.1 (0x00007f9dc4fbc000) libkmldom.so.1 => /lib/x86_64-linux-gnu/libkmldom.so.1 (0x00007f9dc4b60000) libkmlengine.so.1 => /lib/x86_64-linux-gnu/libkmlengine.so.1 (0x00007f9dc4f83000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f9dc4b2f000) libxerces-c-3.2.so => /lib/x86_64-linux-gnu/libxerces-c-3.2.so (0x00007f9dc4600000) libnetcdf.so.19 => /lib/x86_64-linux-gnu/libnetcdf.so.19 (0x00007f9dc49d8000) libmfhdfalt.so.0 => /lib/libmfhdfalt.so.0 (0x00007f9dc4f59000) libdfalt.so.0 => /lib/libdfalt.so.0 (0x00007f9dc455b000) libogdi.so.4.1 => /lib/libogdi.so.4.1 (0x00007f9dc49bc000) libgif.so.7 => /lib/x86_64-linux-gnu/libgif.so.7 (0x00007f9dc54c5000) libgeotiff.so.5 => /lib/x86_64-linux-gnu/libgeotiff.so.5 (0x00007f9dc4987000) libcfitsio.so.9 => /lib/x86_64-linux-gnu/libcfitsio.so.9 (0x00007f9dc4200000) libpq.so.5 => /lib/x86_64-linux-gnu/libpq.so.5 (0x00007f9dc4509000) liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f9dc4967000) libblosc.so.1 => /lib/x86_64-linux-gnu/libblosc.so.1 (0x00007f9dc4956000) libproj.so.22 => /lib/x86_64-linux-gnu/libproj.so.22 (0x00007f9dc3e00000) libsqlite3.so.0 => /lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f9dc3cb3000) libspatialite.so.7 => /lib/x86_64-linux-gnu/libspatialite.so.7 (0x00007f9dc3400000) libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f9dc4169000) libfyba.so.0 => /lib/x86_64-linux-gnu/libfyba.so.0 (0x00007f9dc3c5b000) libmysqlclient.so.21 => /lib/x86_64-linux-gnu/libmysqlclient.so.21 (0x00007f9dc2c00000) libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f9dc3c0d000) libatspi.so.0 => /lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f9dc33c6000) libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f9dc3382000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9dc3356000) libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0 (0x00007f9dc3c02000) libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f9dc332f000) libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f9dc3305000) libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x00007f9dc3be4000) libsoxr.so.0 => /lib/x86_64-linux-gnu/libsoxr.so.0 (0x00007f9dc329e000) libogg.so.0 => /lib/x86_64-linux-gnu/libogg.so.0 (0x00007f9dc3293000) libnuma.so.1 => /lib/x86_64-linux-gnu/libnuma.so.1 (0x00007f9dc2bf3000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9dc328e000) libicuuc.so.70 => /lib/x86_64-linux-gnu/libicuuc.so.70 (0x00007f9dc29f8000) libmpg123.so.0 => /lib/x86_64-linux-gnu/libmpg123.so.0 (0x00007f9dc299c000) libvorbisfile.so.3 => /lib/x86_64-linux-gnu/libvorbisfile.so.3 (0x00007f9dc2991000) libudfread.so.0 => /lib/x86_64-linux-gnu/libudfread.so.0 (0x00007f9dc2986000) libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f9dc284b000) libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f9dc2833000) libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f9dc26f5000) libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f9dc26cf000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f9dc26b7000) libsodium.so.23 => /lib/x86_64-linux-gnu/libsodium.so.23 (0x00007f9dc265f000) libpgm-5.3.so.0 => /lib/x86_64-linux-gnu/libpgm-5.3.so.0 (0x00007f9dc260e000) libnorm.so.1 => /lib/x86_64-linux-gnu/libnorm.so.1 (0x00007f9dc24e3000) libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f9dc24dc000) libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f9dc24c8000) libde265.so.0 => /lib/x86_64-linux-gnu/libde265.so.0 (0x00007f9dc241e000) libblas.so.3 => /lib/x86_64-linux-gnu/libblas.so.3 (0x00007f9dc2378000) liblapack.so.3 => /lib/x86_64-linux-gnu/liblapack.so.3 (0x00007f9dc1c00000) libarpack.so.2 => /lib/x86_64-linux-gnu/libarpack.so.2 (0x00007f9dc1bb8000) libsuperlu.so.5 => /lib/x86_64-linux-gnu/libsuperlu.so.5 (0x00007f9dc1b46000) liblcms2.so.2 => /lib/x86_64-linux-gnu/liblcms2.so.2 (0x00007f9dc1ae4000) libnss3.so => /lib/x86_64-linux-gnu/libnss3.so (0x00007f9dc19b7000) libsmime3.so => /lib/x86_64-linux-gnu/libsmime3.so (0x00007f9dc234e000) libplc4.so => /lib/x86_64-linux-gnu/libplc4.so (0x00007f9dc2347000) libnspr4.so => /lib/x86_64-linux-gnu/libnspr4.so (0x00007f9dc1977000) libgeos.so.3.10.2 => /lib/x86_64-linux-gnu/libgeos.so.3.10.2 (0x00007f9dc1600000) libminizip.so.1 => /lib/x86_64-linux-gnu/libminizip.so.1 (0x00007f9dc1200000) liburiparser.so.1 => /lib/x86_64-linux-gnu/liburiparser.so.1 (0x00007f9dc1960000) libcurl-gnutls.so.4 => /lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007f9dc18be000) libhdf5_serial_hl.so.100 => /lib/x86_64-linux-gnu/libhdf5_serial_hl.so.100 (0x00007f9dc1899000) libtirpc.so.3 => /lib/x86_64-linux-gnu/libtirpc.so.3 (0x00007f9dc186b000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9dc2340000) librttopo.so.1 => /lib/x86_64-linux-gnu/librttopo.so.1 (0x00007f9dc158d000) libfyut.so.0 => /lib/x86_64-linux-gnu/libfyut.so.0 (0x00007f9dc1860000) libfygm.so.0 => /lib/x86_64-linux-gnu/libfygm.so.0 (0x00007f9dc1857000) libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f9dc14c6000) libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f9dc1820000) libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f9dc1817000) libgomp.so.1 => /lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f9dc147c000) libicudata.so.70 => /lib/x86_64-linux-gnu/libicudata.so.70 (0x00007f9dbf400000) libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f9dc146f000) libgfortran.so.5 => /lib/x86_64-linux-gnu/libgfortran.so.5 (0x00007f9dbf000000) libnssutil3.so => /lib/x86_64-linux-gnu/libnssutil3.so (0x00007f9dc143d000) libplds4.so => /lib/x86_64-linux-gnu/libplds4.so (0x00007f9dc1812000) libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f9dc1432000) libquadmath.so.0 => /lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f9dc11b8000)

ogeorget-psee commented 1 year ago

Hi @ivangalysh

The base library metavision_sdk_core also depends on opencv_highgui as you can see here. https://github.com/prophesee-ai/openeb/blob/09c57ca3a58c99ad515c548289eec6be9b4ae895/sdk/modules/core/cpp/lib/CMakeLists.txt#L29

This is a requirement for simple_displayer.cpp that makes use of OpenCV Gui.

If you don't use it, you can comment it our from the CmakeList here : https://github.com/prophesee-ai/openeb/blob/09c57ca3a58c99ad515c548289eec6be9b4ae895/sdk/modules/core/cpp/src/CMakeLists.txt#L21.

This should get rid of the dependency.

ivangalysh commented 1 year ago

I did that and more to where I was able to generate the libraries with no references to opencv and gtk and my code also doesn't want those libraries.

Along with the simple_displayer.cpp, I had to comment out anything that generates a frame or does anything with video. The overall cmake fails after compiling and linking metavision_sdk_getting_started so the code and libraries I want do get compiled and linked.

I think I am good for now. I just have to learn how to add pixel masking to my code. Does pixel masking require opencv?

You can close this out. Thanks for all your help. Ivan

lbristiel-psee commented 1 year ago

Hello @ivangalysh , we will clean our code to avoid unnecessary OpenCV dependency in our next version. Thanks for the feedback. About your question on "pixel masking", can you explain what you are willing to achieve? Best, Laurent

ivangalysh commented 1 year ago

We want to mask out any stuck pixels that may trigger more than it should. We have one sensor that has one pixel that triggers frequently and want to disable it. For our misssion we want to disable pixels that trigger when they are not supposed to.

Ivan

lbristiel-psee commented 1 year ago

If you are using one of Prophesee last generation sensor (Gen41 and IMX636), you can leverage the Digital Event Mask feature that is available through the HAL C++ API (see API doc). You can see it in action in the sample metavision_hal_showcase: https://docs.prophesee.ai/stable/metavision_sdk/modules/hal/samples/hal_showcase.html

Here is the piece of code related to the mask:

Metavision::I_DigitalEventMask *digital_event_mask = device->get_facility<Metavision::I_DigitalEventMask>();
if (pixel_mask_coord.size() && digital_event_mask) {
    try {
        auto tokens = tokenize(pixel_mask_coord, ",");
        if (tokens.size() < 2) {
            throw std::runtime_error{"Failed to parse pixel coordinates"};
        }

        size_t x = tokens[0];
        size_t y = tokens[1];
        std::cout << "Masking pixel {" << x << "," << y << "} - no event will be generated by this pixel \n";

        auto masks = digital_event_mask->get_pixel_masks();
        if (masks.size() >= 1) {
            masks[0]->set_mask(x, y, true);
        }
    } catch (...) {
        std::cerr << "Failed to parse Pixel mask coordinates : " << pixel_mask_coord
                  << " - please see helper description \n";
    }
}

Hope this helps, Laurent

ivangalysh commented 1 year ago

Thanks for pointing me to this. I am now using the showcase code as my base. I was able to remove all GUI and opencv and it compiles properly and runs on the ARM computer. I am now customizing it to meet my requirements.

Thanks for your help.

Ivan

ivangalysh commented 1 year ago

Quick question. How many pixels can I mask? I checked the size of the mask and it looks like up to 64 can be added. Is that correct?

Ivan

lbristiel-psee commented 1 year ago

Quick question. How many pixels can I mask? I checked the size of the mask and it looks like up to 64 can be added. Is that correct?

yes, this is correct, you can mask up to 64 pixels.