ubuntu安装opencv c++ 版,配置使用clion开发,以及一些可能存在的坑解决方案

零、碎碎念(

安装这个opencv c++版是遇到了各种各样奇怪的坑
编译过程超级长,第一次编译的时候看的很心慌,还好没有遇到编译问题,比较顺利
但是初次使用过程中,各种奇怪的坑就出现了,
仅仅是最简单的读取一张图片,显示出来,就有各种各样奇怪的问题

一、下载

打开这个链接
https://opencv.org/releases
选择最新版,或者根据需要选择版本,点击sources进行下载,如果你下载的比较慢的话,可以使用以下链接进行下载(打不开的话,可以把lanzouw改成lanzoux)
https://lyyqaq.lanzouw.com/ihwWA00tttgj

二、 安装

安装cmake

首先,需要cmake以及make

sudo apt install cmake make
安装依赖库

建议直接复制

sudo apt-get install build-essential pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
解压并创建build目录
unzip opencv-4.5.5.zip
cd opencv-4.5.5
mkdir build
cd build
执行cmake

下面这行一定要全部复制,不需要更改

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_GTK=ON -D OPENCV_GENERATE_PKGCONFIG=YES ..

CMAKE_BUILD_TYPE=RELEASE:表示编译发布版本
CMAKE_INSTALL_PREFIX:表示生成动态库的安装路径,可以自定义
WITH_GTK=ON:这个配置是为了防止GTK配置失败:即安装了libgtk2.0-dev依赖,还是报错未安装
OPENCV_GENERATE_PKGCONFIG=YES:表示自动生成OpenCV的pkgconfig文件,否则需要自己手动生成。

编译与安装
make -j4

数字4是表示用4个系统内核编译,根据配置不同,可能要等待十几分钟到半小时

sudo make install

三、环境配置

1. 将库添加到系统路径
sudo vim /etc/ld.so.conf

在打开的文件末尾,增加一行include /usr/local/lib

最后

sudo ldconfig

即可

注意,针对使用WSL构建,到这一步时,会报错
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

解决办法见问题四

2. 配置系统bash
sudo vim /etc/bash.bashrc

在末尾添加下面两行

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存退出,再source一下

source /etc/bash.bashrc

四、测试

打开clion创建一个工程,将opencv页面的图标保存下来,放到工程目录下

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main() {
    Mat img = imread("../opencv.png");
    imshow("Image", img);
    waitKey(0);
    return 0;
}

可能遇到的问题

问题一,找不到opencv2文件夹

点开外部库的include文件夹,可以看到opencv4文件夹,并且opencv2文件夹在opencv4下面
在这里插入图片描述
此时可以给opencv2文件夹手动创建一个软链接

cd /usr/local/include/
sudo ln -s opencv4/opencv2 opencv2

重新回到clion,可以看到问题解决

问题二,clion运行提示undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)’

如下图
在这里插入图片描述
可以看到报错信息中提示,在链接时出错,这是因为找不到opencv的库

此时需要修改CMakeLists.txt

set(CMAKE_CXX_STANDARD xxx)add_executable(xxx main.cpp)中间添加

find_package(OpenCV REQUIRED)

message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

if(CMAKE_VERSION VERSION_LESS "2.8.11")
    # Add OpenCV headers location to your include paths
    include_directories(${OpenCV_INCLUDE_DIRS})
endif()

在最末尾添加

target_link_libraries(test0001 ${OpenCV_LIBS})

刷新cmake

可以看到cmake给出提示,opencv的版本以及安装路径
在这里插入图片描述

如果有多个版本的opencv,则需要在上方指定版本
修改find_package(OpenCV REQUIRED)find_package(OpenCV x.x.x REQUIRED),中间的为版本号
例如find_package(OpenCV 4.5.5 REQUIRED)
此时再运行代码,成功运行

问题三 执行代码过程中报错 Gtk-Message: 22:10:22.904: Failed to load module “appmenu-gtk-module”

执行以下命令即可

sudo apt-get install appmenu-gtk2-module appmenu-gtk3-module
问题四 执行sudo ldconfig 时,报错/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

常规方法是删除掉两个出问题的文件再创建软连接,但此时你会发现没有权限删除,我在参考链接4的博客中,找到了解决方案

以管理员权限,打开一个Windows Terminal窗口,然后输入以下指令,不要全部复制,一条一条输入。

wsl -e /bin/bash
cd /mnt/c/Windows/System32/lxss/lib
rm -r libcuda.so.1
rm -r libcuda.so
ln -s libcuda.so.1.1 libcuda.so.1
ln -s libcuda.so.1.1 libcuda.so

如果没有权限的话,前面加上sudo就可以了。
再尝试sudo ldconfig即可解决

参考链接

Ubuntu 18.04安装配置OpenCV 4.4.0
Linux 下 fatal error: opencv2/opencv.hpp: 没有那个文件或目录
Cannot get OpenCV to compile because of undefined references?
WSL2 + Dockerのメモ

  • 13
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值