ubuntu18.04 ROS Melodic OpenCV相关的问题

问题描述:

 运行编译通过,运行时报错:

报错matrix.cpp

OpenCV Error: Assertion failed (s >= 0) in setSize, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/src/matrix.cpp, line 307
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/src/matrix.cpp:307: error: (-215) s >= 0 in function setSize

 

相关的可执行文件的链接库如下:

	libopencv_core.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2 (0x00007f140cbd7000)
	libopencv_line_descriptor.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_line_descriptor.so.3.4 (0x00007f140a2f1000)
	libopencv_calib3d.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_calib3d.so.3.4 (0x00007f1408ab0000)
	libopencv_features2d.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_features2d.so.3.4 (0x00007f14087e1000)
	libopencv_highgui.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_highgui.so.3.4 (0x00007f140859f000)
	libopencv_imgproc.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_imgproc.so.3.4 (0x00007f14055a2000)
	libopencv_core.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_core.so.3.4 (0x00007f1404233000)
	libopencv_imgcodecs.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2 (0x00007f1403dcb000)
	libopencv_imgproc.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2 (0x00007f1403572000)
	libopencv_flann.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_flann.so.3.4 (0x00007f13fd041000)
	libopencv_imgcodecs.so.3.4 => /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_imgcodecs.so.3.4 (0x00007f13fc2b6000)

可以看到,这里我所调用的OpenCV是自己安装的OpenCV3.4.6位于第三方的位置。相关的编译命令如下:

cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/home/nan/LIBS/opencv-3.4.6/release/installed \-D INSTALL_C_EXAMPLES=ON \-D INSTALL_PYTHON_EXAMPLES=ON \-D WITH_TBB=ON \-D WITH_V4L=ON \-D WITH_QT=ON \-D WITH_OPENGL=ON \-D WITH_CUDA=ON \-D OPENCV_EXTRA_MODULES_PATH=/home/nan/LIBS/opencv-3.4.6/opencv_contrib/modules ..

同时编译了opencv对应的contrib,prefix为自定义的第三方路径。然后也是创建了

 /etc/ld.so.conf.d/libopencv.conf

来避免OpenCV的冲突,并且在自己的程序中set了OPENCV_DIR

然后编译自己的程序时,到最后会有几个warning:

/usr/bin/ld: warning: libopencv_core.so.3.4, needed by ../lib/xxx.so, may conflict with libopencv_core.so.3.2

/usr/bin/ld: warning: libopencv_imgcodecs.so.3.4, needed by /home/nan/LIBS/opencv-3.4.6/release/installed/lib/libopencv_highgui.so.3.4.6, may conflict with libopencv_imgcodecs.so.3.2

这里由于是warning就没有大问题,可以通过编译,但是运行时会出现上述的错误。

 

解决办法:

1. 尝试消除warning后,错误仍然出现。warning是由于这些库默认找的opencv和我安装的不是同一个,所以需要手动改CMakeLists来编译。

2.修改完成后就没问题了。。。。

 

参考:

https://stackoverflow.com/questions/56282718/why-cv-bridge-uses-opencv-3-2-in-ros-melodic

解决cv_bridge等找opencv库不太对的问题:

https://blog.csdn.net/wakingking88/article/details/104648636

https://blog.csdn.net/bigdog_1027/article/details/79092263

https://blog.csdn.net/qq_38589460/article/details/88756701

https://blog.csdn.net/xiat5/article/details/79354573

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值