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

写在前面

  • 我用的是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__)

出现版本号就成功

结语

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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值