Ubuntu opencv安装与cmake调用,还有因anaconda而起的常见错误

Ubuntu opencv安装与cmake调用

opencv的安装

1.从github官方进行clone

git clone https://github.com/opencv/opencv.git

2.进入你刚刚clone的opencv文件夹
创建一个build,并进入

mkdir build
cd build

3.进行编译

cmake -D BUILD_TIFF=ON ..

在这里插入图片描述
编译完成后,进行install也就是动态库的生成
开始生成动态库了

sudo make install -j8

这个过程比较漫长 注意install过程中需要特殊权限,所以需要sudo 同时通过-j多核编译会快一些

可能出现的问题 :
如果你装了anaconda 可能会产生库调用的不兼容如:
问题①

/usr/bin/ld: warning: libpcre.so.1, needed by //home/truth/anaconda3/lib/libglib-2.0.so.0, not found (try using -rpath or -rpath-link)
//home/truth/anaconda3/lib/libgstapp-1.0.so.0:对‘gst_base_src_submit_buffer_list’未定义的引用

在这里插入图片描述
具体解决参考:https://www.jianshu.com/p/c69b8cb9a6c7
概括之就是通过软连接的方式用系统自带的库文件来取代anaconda下的

sudo ln -s ~/anaconda3/lib/libgstapp-1.0.so.0 /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0

问题②:
找不到某个动态库

../../lib/libopencv_highgui.so.4.4.0:对‘gtk_widget_get_realized’未定义的引

显然就是少了,我们给它加上
解决方法

sudo apt install libpng16-dev

问题③:
成功install后运行cpp的报错

error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

显然就是缺少了一些依赖项
所以补上

sudo apt-get install libgtk2.0-dev and pkg-config

注意这两个库也需要相应的依赖项,请按照bash的提示进行安装

然后

make clean 

重复上面的第三步

4.恭喜你完成了opencv的安装

opencv的使用

使用基于cmake下,给出cmakelist作为示例
主要步骤就是把头文件和动态库给include进来
cmake的思路是这样的:

找到头文件
编译
调用动态库

如果你是第一次安装opencv

如果你是第一次安装opencv,find_package 是个不错的选择

find_package(OpenCV REQUIRED)

通过这个语句,系统自动可以帮你找opencv的路径,并把头文件和动态库放到一些变量里,方便后面调用

头文件的路径被放到OpenCV_INCLUDE_DIRS
动态库的路径被放到OpenCV_LIBS
1.先找到头文件

include_directories(${OpenCV_INCLUDE_DIRS})

2.编译

add_executable(xxx项目名 main.cpp主函数  其他cpp如果需要的话 )

3.链接动态库

target_link_libraries(xxx ${OpenCV_LIBS})

下面给出一个完整的示例

# 基本的配置
cmake_minimum_required(VERSION 3.15)
project(xxx)
set(CMAKE_CXX_STANDARD 14)
add_definitions(-std=c++11)


# Add OpenCV headers location to your include paths
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

# Declare the executable target built from your sources
add_executable(xxx main.cpp)

# Link your application with OpenCV libraries
target_link_libraries(xxx ${OpenCV_LIBS})


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值