wsl+opencv——清除旧版并安装新版,实测有效

2023-05-16

写在前面

  • 我用的是cmake方式编译安装的opencv,但一直弄不好contrib这个东西,索性先不用
  • 老版本的opencv我把源文件都删掉了,没法用网上的一些方法make uninstall

卸载清除旧版本

  1. 步骤一(如果还保留了编译的源文件,进入build文件夹)
sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*```
  1. 步骤二(卸载/usr中的OpenCV相关内容)
cd /usr/
find . -name "*opencv*" | xargs sudo rm -rf

如果你已经把opencv文件删掉了,那么直接从这里开始即可

  1. 验证是否成功卸载
pkg-config opencv --libs
pkg-config opencv --modversion

如果什么都没有就表示成功

重新安装新版opencv

利用cmake编译安装(C/C++)

  1. 下载基本需要的包文件
sudo apt install  build-essential
 
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev  
 
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

这里如果出了问题(无法定位软件包libjasper-dev 的错误提示),按下面的代码执行

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt upgrade
sudo apt install libjasper1 libjasper-dev
  1. 从Opencv官网下载你需要的版本的source源码到windows下,再移动到wsl下

以下是一些提高效率的操作!

如何流畅的在wsl和windows下移动文件?
答:windows下在文件浏览器地址栏输入 \\wsl$

为了更方便?如何在Vscode中访问wsl?
专业同志们都应该知道Vscode,强烈建议使用
在Vscode的插件市场安装下图中的这个插件

WSL按照下图指示,你将打开WSL的新世界!!!
在这里插入图片描述


回归正题:将下载的source源码导入wsl中任意文件夹后

  1. 进入解压出来的文件夹(举例:OpenCV-4.1.0)中,创建一个新文件夹,我创建的叫 build
cd OpenCV-4.1.0
mkdir build
cd build
  1. 接着执行以下命令设置参数
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

如果报错,那么去掉 -D后面的空格再尝试一下,即

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

这之中 , /usr/local 是 OpenCV 的安装路径

  1. 开始编译
sudo make

或者使用多线程进行编译

sudo make -j8

8指的是线程数,和CPU内核数目有关

  1. 等待编译结束

  2. 编译结束后输入安装命令

sudo make install 

环境配置

  1. 打开opencv.conf文件(利用Vscode可直接打开所有文件,爽)

目录为 /etc/ld.so.conf.d/opencv.conf

在文末添加:/usr/local/lib

执行sudo ldconfig 使其生效

  1. 打开.bashrc 文件

目录为 /etc/bash.bashrc

文末添加两行
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

执行source /etc/bash.bashrc 使其生效

配置到这里结束
But,肯定会有很多问题和坑的了。

  1. 可能遇到的坑
  • 第一个坑

/etc/bash.bashrc:11: command not found: shopt

这主要是因为你的终端不是bash的原因
查看终端版本

echo $SHELL
/usr/bin/zsh

那就去.zshrc文件里面添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后source /home/username/.zshrc使其生效

username 是你自己的用户名

  • 第二个坑

No package ‘opencv’ found

当我们输入以下命令查看是否安装好的时候

pkg-config opencv --modversion

却遇到下面这个错误

Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

缺少opencv.pc文件

cd /usr/local/lib
sudo mkdir pkgconfig && cd pkgconfig

修改目录下的opencv.pc文件,没有就自己新建一个

prefix=/usr/local
exec_prefix=${prefix}
includedir=/usr/local/include
libdir=/usr/local/lib
 
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.1.0(改成自己的版本号)
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}
  1. 最后大功告成了,进入测试环节

测试C++代码

main.cpp的内容

#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv4/opencv2/core.hpp>
 
using namespace std;
using namespace cv;   
 
int main(){
	Mat img=imread("/home/yuque/Code/openmv/DisplayImage/test.png");
	imshow("test",img);
	waitKey(0);
	return 0;
}

CmakeLists.txt中的内容

# cmake needs this line
cmake_minimum_required(VERSION 3.1)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

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

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

  • 将上面两个文件放入一个文件夹中,如test
  • 放入一张图片在test文件夹中,main.cpp中imread那里记得改图片路径
  • 进入test文件夹中
  • 输入如下命令
mkdir build
cd build
cmake .
make
./opencv_example

如果显示了图片则成功

当然是不会成功的,因为还要安装一款软件
在windows下安装下图软件,然后它的配置去网上找
知乎VrXsrv
在这里插入图片描述

  • 在windows下的配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 在Linux下的配置:

在.bashrc或者.zshrc文件中加上这一行

export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0

最后再运行一下./opencv_example就可以愉快的看到图片了!!!

Anaconda环境下的opencv

bash一行代码搞定

pip install opencv-python -i https://pypi.douban.com/simple

可以输入以下命令验证

python
import cv2
print(cv2.__version__)

出现版本号就成功

结语

花了好多时间研究这个环境配置,希望能帮助到有需要的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wsl+opencv——清除旧版并安装新版,实测有效 的相关文章

  • ubuntu18安装ros1

    是非成败转头空 青山依旧在 xff0c 几度夕阳红 临江仙 滚滚长江东逝水 杨慎 0 前言 我都不明白安装一个ros有这么难么 xff0c 某学弟经常说卡住了安不了啥啥的 真是服了 xff0c 我再安一遍看看还有谁特么再说安不上 1 添加源
  • centos urllib3安装出错

    当卸载urllib3之后 xff0c 尝试重新安装 xff0c 发现出现问题 而后 xff0c 经过一番学习 xff0c 找到了解决办法 pip install upgrade urllib3 问题解决 xff01
  • Numpy简单学习(Spyder)

    1 Numpy创建 A 61 np array 1 2 3 4 5 6 两行三列的列表 类型为n维列表 Z 61 np zeros 3 2 3行2列的全0矩阵 Z1 61 np zeros 3 5 3行5列全0矩阵 全1矩阵 np ones
  • sip篇——服务器

    上篇提到sip定义了如何管理整个会话过程 xff0c 其实就是负责建立连接 监控和断开一个或多个参与者参与的会话 xff0c 利用IP地址和协议建立网络会话 xff0c 使得世界各地的人都可以通过互联网及时建立连接 1 sip中的逻辑组件
  • RTSP协议,与sip区别

    RTSP Real Time Streaming Protocol 是应用层中的实时流协议 xff0c 处于RTP RTCP SRTP等之上 xff0c 使用RTP或TCP来进行数据的传输 xff0c 其本身并不传输媒体流数据 xff0c
  • sip服务器搭建篇——虚拟机

    1 摘要 sip服务器 xff08 上篇所述的代理 注册 重定向等服务器功能组合而成的服务器软件 xff09 基于Linux操作系统而搭建 xff0c 这就需要在windows操作系统中下载虚拟机 xff0c 然后在虚拟机中才能使用Linu
  • Ubuntu常用命令[1]-ls、pwd、cd、mkdir、rmdir、apt

    xff0a ls ls是list的缩写 xff0c 列出当前目录下所有的文件或子目录 ls l 则是以更详细的模式进行查看 要点1 xff1a 在输入命令和路径时 xff0c 按tab键可自动补全 xff0c 例如ls ho xff0c 按
  • 什么是网关,网关的作用是什么

    1 什么是网关 网关又称网间连接器 协议转换器 xff0c 也就是网段 局域网 广域网 关卡 xff0c 不同网段中的主机不能直接通信 xff0c 需要通过关卡才能进行互访 xff0c 比如IP地址为192 168 31 9 子网掩码 xf
  • 无法访问opensips control panel

    OpenSIPS控制面板是一个用于供应的PHP Web门户OpenSIPS服务器 xff0c 可以为opensips提供系统和用户配置 xff0c 我们可以在该面板上添加 修改 管理sip账户信息和权限 有时候无法访问 xff0c 需要先将
  • sip电话注册失败问题解决心得总结

    这是我学习搭建opensips服务器以来持续性最长的一个问题 xff0c 具体就是终端电话软件一直注册不了已经创建好的sip会话账号 我刚开始用的终端电话软件是Zoiper xff0c 要么一直在注册中 xff0c 要么直接注册失败 xff
  • 面向对象以及类和对象的概念

    面向对象 面向对象和面向过程的区别 面向过程 xff1a 主要的关注点是实现具体的过程 xff0c 因果关系 集成显卡的开发思路 优点 xff1a 对于业务逻辑比较简单的程序 xff0c 可以达到快速开发 xff0c 前期投入成本较低 缺点
  • 尚硅谷hadoop3.x集群配置笔记及常见错误解决方式

    1 搭建集群准备工作 总体流程 准备3台客户机 xff08 关闭防火墙 静态IP 主机名称 xff09 安装JDK 配置环境变量 安装Hadoop 配置环境变量 配置集群 单点启动 配置ssh 群起并测试集群 一 模板虚拟机的搭建 配置要求
  • Centos 7系统下NTP时间同步服务配置

    NTP分为服务器端与客户端 xff08 自己选择某一台机器为服务器端 xff0c 其他机器则为客户端 xff09 xff0c 其中 xff0c 客户端通过向服务器端发送时间同步请求实现整个集群的时间同步 具体操作步骤如下所示 xff1a 1
  • EduCoder-程序设计技术R(第四部分循环结构程序设计1)- 第5关:求sn=a+aa+aaa+aaaa+......的值

    大家好鸭 x1f60e xff0c 前几期的EduCoder题解 xff0c 阅读量超过了之前的好多文章 xff01 谢谢大家的阅读 如果题目AC的话 xff0c 求一个免费的赞噢 x1f47b 如果有编程相关的问题 xff0c 可以一起交
  • 和风天气获取天气情况

    和风天气api xff08 实时天气 xff09 https dev qweather com docs api weather weather now 控制台 https console qweather com apps 1 进入控制台
  • Java习题练习:组队

    目录 题目描述 思路 其他真题 题目描述 作为篮球队教练 你需要从以下名单中选出1 号位至5 号位各一名球员 组成球队的首发阵容 每位球员担任1 号位至5 号位时的评分如下表所示 请你计算首发阵容1 号位至5 号位的评分之和最大可能是多少
  • 基于朴素贝叶斯分类器的西瓜数据集(实战)

    最近刚开始学习机器学习中的朴素贝叶斯分类器 xff0c 用西瓜数据集做了一下 xff0c 最后结果预测正确率75 xff0c 其中运用到的python语法并不复杂 xff0c 适合小白观看 目录 朴素贝叶斯分类器思想的自然语言描述 xff1
  • Golang将密码盐加密

    代码地址 xff1a https gitcode net m0 51510236 go password 首先我们来初始化一个项目 go mod init go password golang密码加密我们可以使用 golang org x
  • Spring使用SpringJUnit4ClassRunner时出现java.lang.NoSuchMethodError错误

    报错情况如下 xff1a java lang NoSuchMethodError org springframework core annotation AnnotatedElementUtils getAnnotationAttribut
  • 自己动手搭建网站:electerm远程连接云服务器,部署环境并发布第一个静态页面

    上篇写了云服务器和域名的选购 xff0c 这篇接上篇 xff0c 记录一下如何远程连接云服务器 xff0c 并发布第一个静态网页 xff0c 环境部署在另一篇博文里 xff1a Linux xff08 CentOS7 xff09 下配置jd

随机推荐

  • 解决IDEA报错Failed to start bean ‘documentationPluginsBootstrapper‘

    前言 白嫖容易 xff0c 创作不易 xff0c 若以下方案解决了问题烦请点赞支持一下 xff08 关注一下更好 xff09 在使用IDEA做项目时使用了Swagger进行接口文档的处理 swagger 使用的版本为2 9 2 xff0c
  • C语言%d输出的不同形式

    d就是普通的输出 2d是将数字按宽度为2 xff0c 采用右对齐方式输出 xff0c 若数据位数不到2位 xff0c 则左边补空格 2d是将数字按宽度为2 xff0c 采用左对齐方式输出 xff0c 若数据位数不到2位 xff0c 则右边补
  • latex常用语法

    字母表 字母上面的上标输入方法 xff0c 如右图所示 xff0c 如 bar a 表示字母a头上有一横线 小写希腊字母的输入方法 xff0c 如右图所示 xff0c 大写希腊字母的输入方法 xff0c 如右图所示 xff0c 大写希腊字母
  • Centos 7 内核升级

    一 升级至最新版本内核 1 升级系统包 xff0c 命令如下 yum update y 2 升级内核 xff0c 命令如下 rpm import http www elrepo orq RPM GPG KEY elrepo orq rpm
  • Win11安装Android子系统

    目录 一 获取安卓子系统安装包 二 安装Hyper v 三 运行Android安装包 四 安装组策略编辑器 五 配置Android环境 六 安装安卓apk格式app 一 获取安卓子系统安装包 百度云盘获取包 链接 xff1a https p
  • python-切割字符串成为列表(split函数)

    split函数切割字符串成为列表 在python的input时 xff0c 我们接收都是string类型 information span class token operator 61 span span class token buil
  • MyBatis实现分页查询

    目录 一 基于注解的简单分页查询 1 定义对象 2 Mapper接口 3 Controller类 4 功能实现 二 基于注解的较复杂分页查询 1 定义shop实体类和page分页类 2 Mapper接口 3 Controller类 4 功能
  • python 读取word表格中的表格

    解决方案 xff1a 在网上没有找到可行的嵌套表格内容读取方法 查看python docx包源代码找到以下两种解决方案 xff1a 方案一 xff1a 按行列读到单元格后再取tables xff0c 此处table cell tables值
  • sublime配置C/C++并调试

    文章目录 前言1 工具准备1 1 sublime的安装1 2 MinGw的安装和配置 2 开始配置2 1 MinGw路径放进环境变量2 2 sublime的配置 3 开始使用3 1 运行代码3 2 调试代码 前言 本文主要讲关于sublim
  • 洛谷P1025 [NOIP2001 提高组] 数的划分(DP)

    题目描述 将整数 n n n 分成 k k k 份 xff0c 且每份不能为空 xff0c 任意两个方案不相同 xff08 不考虑顺序 xff09 例如 xff1a
  • 【Rust深入浅出-5】拓展数据类型

    Rust深入浅出 5 拓展数据类型 第一章Hello World 第二章 变量和基本数据类型 第三章 运算符 第四章 类型转换 第五章 拓展数据类型 文章目录 Rust深入浅出 5 拓展数据类型前言slice切片tuple元组索引match
  • sort 函数排序之cmp浅析

    1 一般来说 xff0c sort可对整型和浮点型数据进行排序 xff0c 排序从小到大 xff0c 如果需要变为从大到小 xff0c 那么我们可以定义一个cmp函数 xff0c 定义如下 xff1a bool cmp int x int
  • 魔导师晨拥

    链接 xff1a 登录 专业IT笔试面试备考平台 牛客网 来源 xff1a 牛客网 魔导师晨拥是 炉石传说 中的一张传说卡牌 魔导师晨拥的英雄技能为初始造成 222 点伤害 xff0c 如果恰好消灭某个随从 xff0c 则伤害永久增加 11
  • Royal TSX常见问题:解决远程桌面(RDP)连接错误

    Royal TSX mac破解版是一款帮助用户管理桌面的Mac桌面管理软件 xff0c Royal TSX for mac为你提供方便安全的访问远程系统 Royal TSX专为服务器管理员 系统工程师 开发人员和IT信息工作者开发设计 xf
  • 解决jupyter notebook :No module named ‘tensorflow‘ 及python.exe无法找到入口问题及500 : Internal Server Error

    目录 jupyter notebook ModuleNotFoundError No module named 39 tensorflow 39 问题 可能性1 xff1a tensorflow版本与python版本不匹配 可能性2 xff
  • Ceph安装步骤1——基础Ceph集群安装

    一 基础环境 本文所搭建环境为Centos 7 内核4 17版本 xff0c 安装Ceph版本为luminous 一共配置三台机器 xff0c 每台机器的IP地址和主机名称分别为 xff1a 192 168 1 131 ceph admin
  • 远程桌面--某些设置由你的组织管理

    解决某些设置由你的组织管理 在cmd的运行里输入 gpedit msc 选择 计算机配置 gt 选择 管理模块 gt 选择 Windows组件 gt 选择 远程桌面服务 gt 选择 远程 桌面会话主机 gt 选择 连接 gt 右击 允许用户
  • 数据结构--第三章--栈和队列--知识点回顾

    第三章 栈和队列 一 基本知识点 1 栈 队列和线性表的异同 2 顺序栈的基本运算算法设计 3 链栈的基本运算算法设计 4 顺序队的基本运算算法设计 5 环形队列和非环形队列的特点 6 链队的基本运算算法设计 7 利用栈 队列求解复杂的应用
  • 实验四 SQL连接查询

    一 实验目的 xff1a 掌握SQL连接查询语句 二 实验内容和主要步骤 xff1a 查询每个学生及其选修成绩的情况 select sno cno Grade from sc 分别用左外连接和右外连接实现查询所有学生信息及其选修成绩的情况
  • wsl+opencv——清除旧版并安装新版,实测有效

    写在前面 我用的是cmake方式编译安装的opencv xff0c 但一直弄不好contrib这个东西 xff0c 索性先不用老版本的opencv我把源文件都删掉了 xff0c 没法用网上的一些方法make uninstall 卸载清除旧版