【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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端