【rust】《Rust整合OpenCV ( Ubuntu.22.04系统 ) 》

前言

Ubuntu22.04的环境搭建、rust安装配置、VSCode安装等参照另一篇博文:https://www.cnblogs.com/-CO-/p/18197715

环境搭建对应项

## 虚拟机版本
VMware        17
## 系统版本
Ubuntu        22.04.4
## Rust版本
Rust        1.78.0
## Rust依赖Opencv版本
Opencv-rust    0.75.0
## Opencv服务版本
Opencv        4.5.5

 下载Opencv源码压缩包

 下载路径:https://github.com/opencv/opencv/releases

下载完成之后在 当前用户目录下 的 Downloads文件夹 内可以看到下载文件。

下载解压工具

sudo apt install unzip

解压文件包

sudo unzip opencv-4.5.5.zip

安装CMake工具

sudo apt-get install cmake

下载opencv依赖包

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  

重点:下载 libjasper-dev包 如果报错“Unable to locate package libjasper-dev”无法定位程序包libjasper-dev 的问题如下解决

1. 设置数字签名

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

2. 更新下载源 

sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

 3. 开始更新源信息 

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update

 然后再次下载。

编译安装Opencv

修改opencv4.0.0 ~ opencv4.7.0 版本之间的源码bug,opencv4.8.0已经修复了这个问题

sudo vim ./opencv-4.5.5/modules/gapi/test/gapi_async_test.cpp

点击键盘i 开始编辑,添加"#include <thread>",保存点击键盘Esc,然后Shift+: 输入wq! 进行保存

进入解压好的opencv源码目录内,新建目录 build

# 进入解压完成的opencv文件夹内
cd ./open-4.5.5
# 新建文件夹
sudo mkdir build
# 进入新建文件夹内
cd ./build

配置CMake

命令最后的两个点千万不要丢掉;在OpenCv4以前的版本是会自动生成Opencv4.pc文件;但是4.X版本后Opencv默认不会自动生成.pc文件。因此在配置cmake时一定要带上"-DOPENCV_GENERATE_PKGCONFIG=ON"参数

sudo cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..

 查看当前系统支持的线程数

nproc

 使用CMake开始编译

 通过刚刚查到的系统最大支持线程数,设置多线程同步编译;我的是4线程,所以这里使用如下命令

sudo make -j4

 漫长的等待后,就可以安装了。

sudo make install

配置Opencv环境变量

 修改 opencv.conf 文件,没有则新建;直接添加路径  /usr/local/lib

sudo vim /etc/ld.so.conf.d/opencv.conf

更新系统共享链接库

sudo ldconfig

修改 bash.bashrc 文件

sudo vim /etc/bash.bashrc

在文件最后添加如下内容

# 文件的最后面追加如下几行
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

更新配置生效

source /etc/bash.bashrc
## updatedb 是用于更新 locate 数据库的工具,没有的话可以先安装
sudo apt-get install mlocate
## 更新库
sudo updatedb

 查看OpenCV4版本号,如果能够查看成功,说明OpenCV安装并配置成功

sudo pkg-config --modversion opencv4

编写Rust代码实例

创建存储项目的目录文件夹

这里我创建目录在 /home/用户名/Project  ;重点:这里创建文件夹不能用sudo 否则cargo new时会报权限错误!!!!

# 切换目录
cd /home/username/
# 创建文件夹,重点:这里创建文件夹不能用sudo 否则cargo new时会报权限错误
mkdir project
# 进入目录内
cd project

命令行新建项目

cargo new rust-demo02

打开VSCode编译器

code

在VSCode的终端中运行 cargo add opencv@0.75.0 命令下载依赖包

使用cargo build构建项目

在src同层级新建文件夹path,并放入几张图片

修改src/main.rs文件

use opencv::{highgui, imgcodecs};

fn main() {
    // 读取图片
    let img = imgcodecs::imread("path/image_01.png", imgcodecs::IMREAD_COLOR).unwrap();
    // 展示图片
    highgui::imshow("window", &img).unwrap();
    highgui::wait_key(0).unwrap();
}

使用命令cargo run运行代码

成功展示图片。

posted @ 2024-05-17 15:42  芋白  阅读(547)  评论(0)    收藏  举报