【rust】《Rust整合OpenCV(Windows版包括环境搭建)》

前言

配置这个opencv真的想屎,国内大多是python与opencv的配置,rust与opencv的配置几乎没有,使用魔法去外面也是零星几篇文章……;我使用两台电脑尝试部署过十几次,所有的部署方式都试过一遍,中途有几次突然就成功了,但是一重启计算机就又报错了,关于这方面我总结了几个玄学问题;所以希望大家这篇文章一定看到最后。(目前我的两台电脑都部署成功并已经开发出Opencv图像特征提取与合并整图项目了)

OpenCV整体环境如下:

Windows10
Visual Studio 2019
chocolatey 最新版本
opencv 4.5.5
LLVM 11.0.0
gcc环境依赖

Rust依赖项:

[dependencies]
# opencv版本
opencv = { version = "0.75.0", features = ["clang-runtime"] }

下载 Visual Studio 2019 

 1. 安装Visual Studio 2019

下载地址:链接:https://pan.baidu.com/s/1BbMBuilkqCsJeJUX6QVOMA?pwd=7tn9 提取码:7tn9

2. 重点:卸载windows10自带的Visual Studio 2022!!!!!

 

下载Chocolatey工具

1. 以管理员运行Windows PowerShell命令窗口

一定要以管理员权限运行!!!!

2. 运行命令安装

也可以登录官网查看安装:https://chocolatey.org/install#individual

直接使用下面命令也可以。

## 命令1
Get-ExecutionPolicy
## 命令2
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

3. 配置环境变量

下载opencv4.5.5

1. 管理员运行Windows PowerShell命令窗口

使用chocolatey命令安装opencv4.5.5

choco install opencv --version 4.5.5 -y --force --execution-timeout 10000

chocolatey会去github拉取安装包,如果没有代理的话会很慢或者直接中断下载,这里推荐另一篇博文安装github访问代理软件

地址:https://www.cnblogs.com/-CO-/p/18209087

默认安装地址在:C:\tools\opencv ;可以将这个opencv文件夹拷贝到其他盘内,只需要配置环境变量的时候指定即可。

2. 配置环境变量

OPENCV_INCLUDE_PATHS

OPENCV_LINK_LIBS   

OPENCV_LINK_PATHS   

Path也要添加一条配置

下载LLVM-11.0.0

1. 管理员运行Windows PowerShell命令窗口

使用chocolatey命令安装llvm-11.0.0

choco install llvm --version 11.0.0 -y --force --execution-timeout 10000

chocolatey会去github拉取安装包,如果没有代理的话会很慢或者直接中断下载,这里推荐另一篇博文安装github访问代理软件

地址:https://www.cnblogs.com/-CO-/p/18209087

默认安装地址在:C:\tools\LLVM ;打开文件夹会看到LLVM-11.0.0.exe文件,如果choco没有默认安装的话可以自己点击exe安装。

2. 配置环境变量

安装gcc环境

1. 下载MSYS2工具

下载地址:MSYS2 ;默认安装即可。

2. 设置环境变量

3. 运行命令

打开命令行窗口

输入命令:

pacman --sync mingw-w64-x86_64-gcc

等待安装完成即可。

Rust代码示例

打开终端运行命令清除缓存信息

cargo clean

添加opencv版本依赖

cargo add opencv@0.75.0

这里注意下格式,依赖版本的格式最好用 { version = "0.75.0" } 包起来

开始构建项目依赖

cargo build

OK!!!完成,写个代码测试下!!!

示例代码

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();
}

能显示图片出来就没问题!!!!

重点!!

所有的部署方式都是不稳定的!!!只是这套流程更简单些!!!我本来已经放弃了,关机一整晚待到明早开机后发现竟然可以了,在部署的时候多次重启都不行!!!;主要的报错问题就是 "error LNK2019: 无法解析的外部符号",处理这个问题有两个玄学的方式。

玄学一

关机放置一整晚,第二天开机运行rust的 cargo clean 命令清除缓存,然后运行 cargo build 命令构建项目,查看是否成功。

玄学二

在尝试上面方式失败后,进行修改opencv的环境变量的值opencv_world430d 去掉 d 改成opencv_world430 不要重启电脑!!!将rust编译器关掉!然后在打开编译器等自动加载完库文件后,使用命令 cargo clean 清除缓存,然后在 cargo build 构建项目。

OPENCV_LINK_LIBS   

其实这篇博文改了好几次,每次意外成功都写一遍,但是电脑重启后再次运行编译器就会报错"error LNK2019: 无法解析的外部符号",所以这次运行成功后就没有再重启了,不喜欢这样操作的朋友可以看我的另一篇博文:Ubuntu22环境搭建opencv;网上另一种自编译opencv的方式我也试验过了,编译opencv源码并生成程序都没有问题,但是rust引用构建的时候就会报错,报错问题都是一样的;自编译的博文也已经写好了就是没发布,如果有感兴趣的朋友可以留言说一下,我可以整理发布这篇文章。

本文作者:芋白🥕

本文链接:https://www.cnblogs.com/-CO-/p/18075315

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   芋白  阅读(1147)  评论(7编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑