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

news/2024/11/19 13:33:50/文章来源:https://www.cnblogs.com/-CO-/p/18197901

前言

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

# 切换目录
cd /home/username/
# 创建文件夹
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运行代码

成功展示图片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707785.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吐槽visdom

必须大吐特吐!!!槽点一:使用前,必须得通过python3 -m visdom.server启动visdom前端服务器 槽点二:服务器不联网好像没法启动(待证实) 槽点三:访问,必须通过启动后的指定端口访问(http://localhost:8097/),要先启动后访问 ⭐见vscode中的PORTS槽点四:程序一旦发生意…

Metabase 安装和使用教程

Metabase 是一款开源的数据分析和商业智能工具,允许企业用户在几分钟内搭建起一个功能完善的数据探索和数据分析平台,不需要编写复杂的 SQL 查询语句或者使用专业的数据可视化工具,就可以轻松地探索数据、创建图表、构建仪表盘,从而洞察业务趋势,回答关键问题。Metabase 还…

暗水印——空域:二值化图像水印(看不见我吧 啦啦啦~)

引言随着计算机和网络技术的飞速发展,信息的安全保护问题日益突出。数字图像、音频和视频等多媒体数字产品愈来愈需要一种有效的版权保护方法——水印技术,通常用于保护知识产权、防止未经授权的访问、作弊等。广义上可以把水印技术划分为四大类:图像水印、视频水印、音频水…

树链剖分代码细解

树链剖分代码细解,HAOI2015树上操作代码作样例。总结回顾类文章,酌情观看。Shape Of You头图 Linux找图太难了呜呜The club isnt the best place to find a lover So the bar is where I go Me and my friends at the table doing shots Drinking faster and then we talk sl…

系统国际化之多语言解决方案| 京东物流技术团队

1. 背景随着京东各业务板块国际化进程的不断推进,诸多业务已经融入了多元文化中,一个一体化的多语言系统解决方案成为各个技术团队讨论的焦点。国际物流系统凭借在国际化领域多年的经验,特别是在系统多语言处理上长期的经验积累,总结了一套标准的系统多语言框架,旨在为大家…

MDS800-16-ASEMI整流模块MDS800-16

MDS800-16-ASEMI整流模块MDS800-16编辑:ll MDS800-16-ASEMI整流模块MDS800-16 型号:MDS800-16 品牌:ASEMI 封装:MDS 平均正向整流电流(Id):800A 最大反向击穿电压(VRM):1600V 产品引线数量:5 产品内部芯片个数:6 产品内部芯片尺寸:102MIL 峰值正向漏电流:<10u…

低功耗、高性价比的XCKU3P-1FFVA676E、XCKU3P-L1FFVB676I、XCKU3P-L2FFVB676E现场可编程门阵列产品概述

Kintex UltraScale+ 器件在 FinFET 节点中提供高性价比,为需要高端功能(包括 33Gb/s 收发器和 100G 连接内核)的应用提供了经济高效的解决方案。Kintex UltraScale+ 器件在 FinFET 节点中提供高性价比,为需要高端功能(包括 33Gb/s 收发器和 100G 连接内核)的应用提供了经…

CaffeineCache Api介绍以及与Guava Cache性能对比| 京东物流技术团队

一、简单介绍: CaffeineCache和Guava的Cache是应用广泛的本地缓存。 在开发中,为了达到降低依赖、提高访问速度的目的。会使用它存储一些维表接口的返回值和数据库查询结果,在有些场景下也会在分布式缓存上再加上一层本地缓存,用来减少对远程服务和数据库的请求次数。 Caff…

nps内网穿透使用

原版的https://github.com/ehang-io/nps已经停止更新 新版的地址 https://github.com/yisier/nps 一、安装 可以下载已经编译好的程序安装。网上有很多教程。 也可以下载源码编译,需要注意的是如果到cmd/nps下面编译,运行的时候,需要把conf目录拷贝到nps目录下才能运行,缺少…

(二)Redis 数据类型与结构

Redis 数据类型与结构1、值的数据类型 Redis “快”取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构。Redis 键值对中值的数据类型,也就是数据的保存形式有5种:String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合)。这…

高薪线下周末班马上开班,手把手带你提升职业技能

管理学大师彼得德鲁克说“终身学习是现在社会的生存法则”,而现实中,很少有人能清醒地意识到这一点,人们总是习惯在舒适区兜圈,重复做已经掌握的事情,对真正需要突破的职业困境视而不见。 偶尔看到同事跳槽涨薪,技术越来越娴熟,自己也期望着可以跟他们一样,幻想着有一天…

dapr离线安装

dapr离线包下载地址: https://github.com/dapr/cli/releases 下载完以后放到C:\dapr目录下,然后配置上环境变量即可,可以用dapr --version查看是否配置成功 初始化包下载地址: https://github.com/dapr/installer-bundle/releases 下载 daprbundle_windows_amd64.zip 解压以后…