в моей программе C ++ opencv, я использую несколько обработок (выпрямление, стереоБМ ...) на jetson TX2
, и я использовал функцию SKD-DJI unprojectPtCloud для непроектированного облака точек 3D, но для сегментацииВначале произошла ошибка
- . Я просто добавил эту функцию в файл
functions.cpp
, добавив строку комментария dernier (без вызова функции unprojet из main ()
)
void Disparity_filter::unprojectPtCloud(std::shared_ptr<Frame> framel)
{
// due to rectification, the image boarder are blank
// we cut them out
const int border_size = num_disp_;
const int trunc_img_width_end = HEIGHT - border_size;
const int trunc_img_height_end = WIDTH - border_size;
cv::Mat_<cv::Vec3f> mat_vec3_pt_ = cv::Mat_<cv::Vec3f>(HEIGHT, WIDTH, cv::Vec3f(0, 0, 0));
cv::Mat color_mat_(HEIGHT, WIDTH, CV_8UC1, &color_buffer_[0]) ;
for(int v = border_size; v < trunc_img_height_end; ++v)
{
for(int u = border_size; u < trunc_img_width_end; ++u)
{
cv::Vec3f &point = mat_vec3_pt_.at<cv::Vec3f>(v, u);
#ifdef USE_OPEN_CV_CONTRIB
float disparity = (float)(framel->raw_disparity_map_.at<short int>(v, u)*0.0625);
#else
float disparity = (float)(framel->raw_disparity_map_.at<short int>(v, u)*0.0625);
#endif
// do not consider pts that are farther than 8.6m, i.e. disparity < 6
if(disparity >= 6)
{
point[2] = baseline_x_fx_/disparity;
point[0] = (u-principal_x_)*point[2]/fx_;
point[1] = (v-principal_y_)*point[2]/fy_;
}
color_buffer_[v*WIDTH+u] = framel->cpu_crop_left.at<uint8_t>(v, u);
}
}
color_mat_ = cv::Mat(HEIGHT, WIDTH, CV_8UC1, &color_buffer_[0]).clone();
//cv::viz::WCloud pt_cloud_ = cv::viz::WCloud(mat_vec3_pt_, color_mat_); // this line commented in 1. and remouved the // in 2.
}
Я скомпилирую и запускаю, и он работает
I ldd
исполняемый файл, и я нашел следующие библиотеки:
nvidia@tegra-ubuntu:~version_04 /build$ ldd stereo_vision
linux-vdso.so.1 => (0x0000007fa62ab000)
libopencv_cudastereo.so.3.4 => /usr/local/lib/libopencv_cudastereo.so.3.4 (0x0000007fa60bd000)
libopencv_cudawarping.so.3.4 => /usr/local/lib/libopencv_cudawarping.so.3.4 (0x0000007fa59f3000)
libopencv_ximgproc.so.3.4 => /usr/local/lib/libopencv_ximgproc.so.3.4 (0x0000007fa57d5000)
libsystemd.so.0 => /lib/aarch64-linux-gnu/libsystemd.so.0 (0x0000007fa572b000)
libopencv_cudaimgproc.so.3.4 => /usr/local/lib/libopencv_cudaimgproc.so.3.4 (0x0000007fa525b000)
libopencv_calib3d.so.3.4 => /usr/local/lib/libopencv_calib3d.so.3.4 (0x0000007fa511d000)
libopencv_highgui.so.3.4 => /usr/local/lib/libopencv_highgui.so.3.4 (0x0000007fa50c3000)
libopencv_videoio.so.3.4 => /usr/local/lib/libopencv_videoio.so.3.4 (0x0000007fa507f000)
libopencv_imgproc.so.3.4 => /usr/local/lib/libopencv_imgproc.so.3.4 (0x0000007fa4c8d000)
libopencv_core.so.3.4 => /usr/local/lib/libopencv_core.so.3.4 (0x0000007fa47b5000)
libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007fa4626000)
libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007fa4605000)
libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007fa45d8000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007fa4491000)
/lib/ld-linux-aarch64.so.1 (0x000000555f7c8000)
libcudart.so.9.0 => /usr/local/cuda-9.0/lib64/libcudart.so.9.0 (0x0000007fa442c000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007fa437e000)
libnppc.so.9.0 => /usr/local/cuda-9.0/lib64/libnppc.so.9.0 (0x0000007fa4304000)
libnppig.so.9.0 => /usr/local/cuda-9.0/lib64/libnppig.so.9.0 (0x0000007fa265f000)
libopencv_imgcodecs.so.3.4 => /usr/local/lib/libopencv_imgcodecs.so.3.4 (0x0000007fa24c9000)
libtbb.so => /usr/local/lib/libtbb.so (0x0000007fa2485000)
libselinux.so.1 => /lib/aarch64-linux-gnu/libselinux.so.1 (0x0000007fa2457000)
librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007fa2440000)
liblzma.so.5 => /lib/aarch64-linux-gnu/liblzma.so.5 (0x0000007fa2413000)
libgcrypt.so.20 => /lib/aarch64-linux-gnu/libgcrypt.so.20 (0x0000007fa2378000)
libopencv_cudafilters.so.3.4 => /usr/local/lib/libopencv_cudafilters.so.3.4 (0x0000007f9ee89000)
libnppial.so.9.0 => /usr/local/cuda-9.0/lib64/libnppial.so.9.0 (0x0000007f9e406000)
libnppicc.so.9.0 => /usr/local/cuda-9.0/lib64/libnppicc.so.9.0 (0x0000007f9dfbc000)
libnppidei.so.9.0 => /usr/local/cuda-9.0/lib64/libnppidei.so.9.0 (0x0000007f9d7f4000)
libnppist.so.9.0 => /usr/local/cuda-9.0/lib64/libnppist.so.9.0 (0x0000007f9c804000)
libnpps.so.9.0 => /usr/local/cuda-9.0/lib64/libnpps.so.9.0 (0x0000007f9be63000)
libopencv_cudaarithm.so.3.4 => /usr/local/lib/libopencv_cudaarithm.so.3.4 (0x0000007f9a528000)
libopencv_flann.so.3.4 => /usr/local/lib/libopencv_flann.so.3.4 (0x0000007f9a4c5000)
libgomp.so.1 => /usr/lib/aarch64-linux-gnu/libgomp.so.1 (0x0000007f9a497000)
libGL.so.1 => /usr/lib/aarch64-linux-gnu/tegra/libGL.so.1 (0x0000007f9a397000)
libQt5Test.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Test.so.5 (0x0000007f9a351000)
libQt5OpenGL.so.5 => /usr/lib/aarch64-linux-gnu/libQt5OpenGL.so.5 (0x0000007f9a2ee000)
libQt5Widgets.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5 (0x0000007f99d28000)
libQt5Gui.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Gui.so.5 (0x0000007f998ad000)
libQt5Core.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Core.so.5 (0x0000007f993e7000)
libgstreamer-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 (0x0000007f992c7000)
libgobject-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0 (0x0000007f9926a000)
libglib-2.0.so.0 => /lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f99163000)
libgstapp-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstapp-1.0.so.0 (0x0000007f99147000)
libgstriff-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstriff-1.0.so.0 (0x0000007f99129000)
libgstpbutils-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstpbutils-1.0.so.0 (0x0000007f990e7000)
libv4l1.so.0 => /usr/lib/aarch64-linux-gnu/libv4l1.so.0 (0x0000007f990d1000)
libv4l2.so.0 => /usr/lib/aarch64-linux-gnu/libv4l2.so.0 (0x0000007f990b3000)
libavcodec-ffmpeg.so.56 => /usr/lib/aarch64-linux-gnu/libavcodec-ffmpeg.so.56 (0x0000007f980e5000)
libavformat-ffmpeg.so.56 => /usr/lib/aarch64-linux-gnu/libavformat-ffmpeg.so.56 (0x0000007f97f06000)
libavutil-ffmpeg.so.54 => /usr/lib/aarch64-linux-gnu/libavutil-ffmpeg.so.54 (0x0000007f97e93000)
libswscale-ffmpeg.so.3 => /usr/lib/aarch64-linux-gnu/libswscale-ffmpeg.so.3 (0x0000007f97e22000)
libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f97e0f000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f97de7000)
libjpeg.so.8 => /usr/lib/aarch64-linux-gnu/libjpeg.so.8 (0x0000007f97da1000)
libpng12.so.0 => /lib/aarch64-linux-gnu/libpng12.so.0 (0x0000007f97d71000)
libtiff.so.5 => /usr/lib/aarch64-linux-gnu/libtiff.so.5 (0x0000007f97cf9000)
libjasper.so.1 => /usr/lib/aarch64-linux-gnu/libjasper.so.1 (0x0000007f97c9c000)
libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007f97c2a000)
libgpg-error.so.0 => /lib/aarch64-linux-gnu/libgpg-error.so.0 (0x0000007f97c09000)
libnppif.so.9.0 => /usr/local/cuda-9.0/lib64/libnppif.so.9.0 (0x0000007f940ad000)
libnppim.so.9.0 => /usr/local/cuda-9.0/lib64/libnppim.so.9.0 (0x0000007f93b76000)
libnppitc.so.9.0 => /usr/local/cuda-9.0/lib64/libnppitc.so.9.0 (0x0000007f9387e000)
libcublas.so.9.0 => /usr/local/cuda-9.0/lib64/libcublas.so.9.0 (0x0000007f91a4d000)
libcufft.so.9.0 => /usr/local/cuda-9.0/lib64/libcufft.so.9.0 (0x0000007f8a973000)
libGLX.so.0 => /usr/lib/aarch64-linux-gnu/tegra/libGLX.so.0 (0x0000007f8a930000)
libGLdispatch.so.0 => /usr/lib/aarch64-linux-gnu/tegra/libGLdispatch.so.0 (0x0000007f8a804000)
libX11.so.6 => /usr/lib/aarch64-linux-gnu/libX11.so.6 (0x0000007f8a6db000)
libharfbuzz.so.0 => /usr/lib/aarch64-linux-gnu/libharfbuzz.so.0 (0x0000007f8a678000)
libicui18n.so.55 => /usr/lib/aarch64-linux-gnu/libicui18n.so.55 (0x0000007f8a40a000)
libicuuc.so.55 => /usr/lib/aarch64-linux-gnu/libicuuc.so.55 (0x0000007f8a26c000)
libpcre16.so.3 => /usr/lib/aarch64-linux-gnu/libpcre16.so.3 (0x0000007f8a206000)
libgmodule-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgmodule-2.0.so.0 (0x0000007f8a1f2000)
libffi.so.6 => /usr/lib/aarch64-linux-gnu/libffi.so.6 (0x0000007f8a1d9000)
libgstbase-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstbase-1.0.so.0 (0x0000007f8a172000)
libgstaudio-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstaudio-1.0.so.0 (0x0000007f8a10c000)
libgsttag-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgsttag-1.0.so.0 (0x0000007f8a0c5000)
libgstvideo-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgstvideo-1.0.so.0 (0x0000007f8a043000)
libv4lconvert.so.0 => /usr/lib/aarch64-linux-gnu/libv4lconvert.so.0 (0x0000007f89fbd000)
libswresample-ffmpeg.so.1 => /usr/lib/aarch64-linux-gnu/libswresample-ffmpeg.so.1 (0x0000007f89f99000)
libva.so.1 => /usr/lib/aarch64-linux-gnu/libva.so.1 (0x0000007f89f6f000)
libzvbi.so.0 => /usr/lib/aarch64-linux-gnu/libzvbi.so.0 (0x0000007f89ee0000)
libxvidcore.so.4 => /usr/lib/aarch64-linux-gnu/libxvidcore.so.4 (0x0000007f89df1000)
libx265.so.79 => /usr/lib/aarch64-linux-gnu/libx265.so.79 (0x0000007f89be8000)
libx264.so.148 => /usr/lib/aarch64-linux-gnu/libx264.so.148 (0x0000007f89a80000)
libwebp.so.5 => /usr/lib/aarch64-linux-gnu/libwebp.so.5 (0x0000007f89a24000)
libwavpack.so.1 => /usr/lib/aarch64-linux-gnu/libwavpack.so.1 (0x0000007f899f0000)
libvpx.so.3 => /usr/lib/aarch64-linux-gnu/libvpx.so.3 (0x0000007f89883000)
libvorbisenc.so.2 => /usr/lib/aarch64-linux-gnu/libvorbisenc.so.2 (0x0000007f897d4000)
libvorbis.so.0 => /usr/lib/aarch64-linux-gnu/libvorbis.so.0 (0x0000007f8979d000)
libtwolame.so.0 => /usr/lib/aarch64-linux-gnu/libtwolame.so.0 (0x0000007f8976d000)
libtheoraenc.so.1 => /usr/lib/aarch64-linux-gnu/libtheoraenc.so.1 (0x0000007f8972b000)
libtheoradec.so.1 => /usr/lib/aarch64-linux-gnu/libtheoradec.so.1 (0x0000007f89706000)
libspeex.so.1 => /usr/lib/aarch64-linux-gnu/libspeex.so.1 (0x0000007f896e1000)
libsnappy.so.1 => /usr/lib/aarch64-linux-gnu/libsnappy.so.1 (0x0000007f896c9000)
libshine.so.3 => /usr/lib/aarch64-linux-gnu/libshine.so.3 (0x0000007f896ac000)
libschroedinger-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libschroedinger-1.0.so.0 (0x0000007f895d6000)
libopus.so.0 => /usr/lib/aarch64-linux-gnu/libopus.so.0 (0x0000007f89589000)
libopenjpeg.so.5 => /usr/lib/aarch64-linux-gnu/libopenjpeg.so.5 (0x0000007f89559000)
libmp3lame.so.0 => /usr/lib/aarch64-linux-gnu/libmp3lame.so.0 (0x0000007f894e0000)
libgsm.so.1 => /usr/lib/aarch64-linux-gnu/libgsm.so.1 (0x0000007f894c6000)
libssh-gcrypt.so.4 => /usr/lib/aarch64-linux-gnu/libssh-gcrypt.so.4 (0x0000007f89478000)
librtmp.so.1 => /usr/lib/aarch64-linux-gnu/librtmp.so.1 (0x0000007f8944e000)
libmodplug.so.1 => /usr/lib/aarch64-linux-gnu/libmodplug.so.1 (0x0000007f892bc000)
libgme.so.0 => /usr/lib/aarch64-linux-gnu/libgme.so.0 (0x0000007f89264000)
libbluray.so.1 => /usr/lib/aarch64-linux-gnu/libbluray.so.1 (0x0000007f89215000)
libgnutls.so.30 => /usr/lib/aarch64-linux-gnu/libgnutls.so.30 (0x0000007f890ef000)
libbz2.so.1.0 => /lib/aarch64-linux-gnu/libbz2.so.1.0 (0x0000007f890cf000)
libjbig.so.0 => /usr/lib/aarch64-linux-gnu/libjbig.so.0 (0x0000007f890b1000)
libXext.so.6 => /usr/lib/aarch64-linux-gnu/libXext.so.6 (0x0000007f89091000)
libxcb.so.1 => /usr/lib/aarch64-linux-gnu/libxcb.so.1 (0x0000007f89065000)
libfreetype.so.6 => /usr/lib/aarch64-linux-gnu/libfreetype.so.6 (0x0000007f88fc8000)
libgraphite2.so.3 => /usr/lib/aarch64-linux-gnu/libgraphite2.so.3 (0x0000007f88f9b000)
libicudata.so.55 => /usr/lib/aarch64-linux-gnu/libicudata.so.55 (0x0000007f876d3000)
liborc-0.4.so.0 => /usr/lib/aarch64-linux-gnu/liborc-0.4.so.0 (0x0000007f87658000)
libsoxr.so.0 => /usr/lib/aarch64-linux-gnu/libsoxr.so.0 (0x0000007f875f4000)
libnuma.so.1 => /usr/lib/aarch64-linux-gnu/libnuma.so.1 (0x0000007f875d6000)
libogg.so.0 => /usr/lib/aarch64-linux-gnu/libogg.so.0 (0x0000007f875be000)
libgssapi_krb5.so.2 => /usr/lib/aarch64-linux-gnu/libgssapi_krb5.so.2 (0x0000007f8756f000)
libhogweed.so.4 => /usr/lib/aarch64-linux-gnu/libhogweed.so.4 (0x0000007f8752e000)
libnettle.so.6 => /usr/lib/aarch64-linux-gnu/libnettle.so.6 (0x0000007f874ee000)
libgmp.so.10 => /usr/lib/aarch64-linux-gnu/libgmp.so.10 (0x0000007f87470000)
libxml2.so.2 => /usr/lib/aarch64-linux-gnu/libxml2.so.2 (0x0000007f872db000)
libfontconfig.so.1 => /usr/lib/aarch64-linux-gnu/libfontconfig.so.1 (0x0000007f8728e000)
libp11-kit.so.0 => /usr/lib/aarch64-linux-gnu/libp11-kit.so.0 (0x0000007f87223000)
libidn.so.11 => /usr/lib/aarch64-linux-gnu/libidn.so.11 (0x0000007f871e0000)
libtasn1.so.6 => /usr/lib/aarch64-linux-gnu/libtasn1.so.6 (0x0000007f871bf000)
libXau.so.6 => /usr/lib/aarch64-linux-gnu/libXau.so.6 (0x0000007f871ab000)
libXdmcp.so.6 => /usr/lib/aarch64-linux-gnu/libXdmcp.so.6 (0x0000007f87196000)
libkrb5.so.3 => /usr/lib/aarch64-linux-gnu/libkrb5.so.3 (0x0000007f870cd000)
libk5crypto.so.3 => /usr/lib/aarch64-linux-gnu/libk5crypto.so.3 (0x0000007f87091000)
libcom_err.so.2 => /lib/aarch64-linux-gnu/libcom_err.so.2 (0x0000007f8707d000)
libkrb5support.so.0 => /usr/lib/aarch64-linux-gnu/libkrb5support.so.0 (0x0000007f87063000)
libexpat.so.1 => /lib/aarch64-linux-gnu/libexpat.so.1 (0x0000007f8702e000)
libkeyutils.so.1 => /lib/aarch64-linux-gnu/libkeyutils.so.1 (0x0000007f8701a000)
libresolv.so.2 => /lib/aarch64-linux-gnu/libresolv.so.2 (0x0000007f86ff4000)
и библиотеки QtБиблиотека:
nvidia@tegra-ubuntu:~/version_04/build$ ldd stereo_vision | grep libQ
libQt5Test.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Test.so.5 (0x0000007f855c6000)
libQt5OpenGL.so.5 => /usr/lib/aarch64-linux-gnu/libQt5OpenGL.so.5 (0x0000007f85563000)
libQt5Widgets.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5 (0x0000007f84f9d000)
libQt5Gui.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Gui.so.5 (0x0000007f84b22000)
libQt5Core.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Core.so.5 (0x0000007f8465c000)
Я удалил комментарий и перекомпилировал программу, а он не сообщал об ошибках и предупреждениях!
Когда я запускаю исполняемый файл.Останавливается с ошибкой сегментации (без отображения отладочного сообщения, которое я поместил в main()
I gdb
исполняемого файла, оно показало мне ошибку относительно libQtGui.so.4
, поэтому я удаляю libqt4
и переустанавливаюit.
Я должен повторить попытку, и теперь он показывает мне ошибку сегментации здесь:
nvidia@tegra-ubuntu:~version_04 /build$ gdb stereo_vision
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from stereo_vision...(no debugging symbols found)...done.
(gdb) run
Starting program: /home/nvidia/stage/version_04_04_dji /build/stereo_vision
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x0000007f99ca57b0 in QBasicAtomicInt::ref (this=<optimized out>)
at ../../include/QtCore/../../src/corelib/arch/qatomic_aarch64.h:116
116 ../../include/QtCore/../../src/corelib/arch/qatomic_aarch64.h: No such file or directory.
(gdb) c
Continuing.
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) Quit
При загрузке связанной библиотеки я обнаружил, что ex связан с Qt4 и Qt5:
nvidia@tegra-ubuntu:~/version_04 /build$ ldd stereo_vision |grep libQt
libQt5Test.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Test.so.5 (0x0000007f75345000)
libQt5OpenGL.so.5 => /usr/lib/aarch64-linux-gnu/libQt5OpenGL.so.5 (0x0000007f752e3000)
libQt5Widgets.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5 (0x0000007f74d1c000)
libQt5Gui.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Gui.so.5 (0x0000007f748a1000)
libQt5Core.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Core.so.5 (0x0000007f743dc000)
libQtGui.so.4 => /usr/lib/aarch64-linux-gnu/libQtGui.so.4 (0x0000007f64c37000)
libQtCore.so.4 => /usr/lib/aarch64-linux-gnu/libQtCore.so.4 (0x0000007f6493a000)
Я не могу решить проблему ..
Нормально ли добавление этой строки кода, программа будет связана с Qt4 и Qt5 без вызова функции unproject frommain()
?
Как я могу использовать cv :: viz :: WCloud?