OpenCV Bug List

在使用OpenCV过程中遇到了很多问题,在这里记录一下:
1、找不到libwebp.so.5:
这是由于有些版本的OpenCV还需要老版本的libwebp.so.5,而新版本的ubuntu已经更新为libwebp.so.6
最简单粗暴的方法是在相应的文件夹中(我的是放在/usr/lib/x86_64-linux-gnu)创建一个libwebp.so.5文件,把他软链接到libwebp.so.6上就可以了。
参考:https://stackoverflow.com/questions/34559185/opencv-build-error-libwebp-so-not-found

2、找不到libpng12.so.0:
这个问题的原因是libpng12在ubuntu18及以上的版本中,已经更新为libpng16
可以下载libpng12.so.0的文件,把他放在/usr/lib/x86_64-linux-gnu文件夹中。
资源已下载至https://download.csdn.net/download/weixin_43242765/32623842,解压即可使用。
参考:https://www.linuxuprising.com/2018/05/fix-libpng12-0-missing-in-ubuntu-1804.html

3、opencv多版本并存使用方式
由于ros中也存在opencv,在使用opencv时可能会出现冲突,另外在使用其他版本的opencv时也会出现版本的问题,如果在安装oipencv的时候直接make install,那么opencv就会安装的到处都是,非常难以清理,今后如果有更换版本的需求就会变得很麻烦,容易删不干净。
因此在使用opencv时,可以把编译完成的opencv放在目录中,使用时在CMakeLists.txt中从这个路径中找opencv就可以了。
cmake使用find_package的过程就是从目录中找.cmake的过程,在opencv中,这个文件被放在了build文件夹下(OpenCVConfig.cmake),找到之后就能够获得对应库的位置,因此可以编写如下CMakeList.txt示例:

set(OpenCV_DIR "/usr/local/opencv-4.3.0/build")
find_package(OpenCV  4.3.0 REQUIRED)
message(STATUS "OpenCV version: ${OpenCV_VERSION}" )

set(OpenCV_INCLUDE_DIRS  "/usr/local/opencv-4.3.0/include/opencv2")
message(STATUS  "OpenCV include path:  ${OpenCV_INCLUDE_DIRS}")
message(STATUS  "OpenCV_LIBRARIES is:  ${OpenCV_LIBRARIES}")

set(OpenCV_LIB_DIR  "/usr/local/opencv-4.3.0/lib")

4、error: invalid use of incomplete type
在使用某个已经实现的类时,如果只是定义某个类的指针,可以使用class关键字先进行声明,而不需包含头文件。
但如果涉及到定义某个类的对象或是引用类的某个具体成员时,则必须包含类的头文件,并且不要加class关键字进行声明。否则就会出现上述错误。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值