在我的程序C ++ opencv中,我在jetson TX2上使用了几种处理方法(整流,stereoBM ...)
我准确地将SKD-DJI unprojectPtCloud函数用于非投影3D点云,但是发生了分割错误
functions.cpp
的文件中(无需从main ()
调用unprojet函数)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.
}
我对其进行编译,然后运行并运行
我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()
我gdb
是可执行文件,它显示了关于libQtGui.so.4
的错误,因此我删除了libqt4
,然后重新安装了它。
我必须重试,现在它在这里显示了分段错误:
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链接,而无需从main()
调用unproject函数?
如何使用cv :: viz :: WCloud?