Rust 模板匹配——根据指定图片查找处于大图中的位置(支持GPU加速)

Rust 模板匹配——根据指定图片查找处于大图中的位置(支持GPU加速)

01 前言

在手搓RPA工具的时候,总会碰到不好定位的情况,那么,就需要根据小图来找到对应屏幕上的位置(以图识图),这个需求也比较简单。想到市面上也有不少RPA工具都有这个功能,那么人家有的,俺也可以有。
为了性能好一些,考虑C++Rust的实现方案。先用C++折腾了一番,各种原因吧,没弄成,又不太想用opencv(只想单纯封装一个以图识图的功能,用它可能连带搞出来一大坨,不是很喜欢,越简单越好)。于是转到Rust试试,水平有限,也折腾了不少时间。
先用了imageproc库(传送)试了,可能姿势不对,贼慢,受不了。
于是又找了半天,看到一个还比较合适的:template_matching传送),还支持GPU加速,中间也碰到比较坑的问题,不过嘎嘎香。

02 正文

开发环境:

Windows 11 64bit
VS Code

Cargo.toml 配置:

[package]
name = "find-image"
version = "0.1.0"
edition = "2021"

[dependencies]
image = { version = "0.25.5", optional = true }
template-matching = { version = "0.2.0", features = ["image"] }


[features]
default = ["image"] 
image = ["dep:image"]

main.rs 内容:

use std::time::Instant;

use image::{
   
   DynamicImage, GenericImageView};
use template_matching::{
   
   find_extremes, MatchTemplateMethod, TemplateMatcher,Image};

use std::env;
use std::f32;
use std::path::PathBuf;


/**
 * 参数
 * full_image_path:大图的全路径
 * part_image_path:小图的全路径
 */
struct TemplateMatchingArgs {
   
   
    full_image_path: PathBuf,
    part_image_path: PathBuf,
}

/**
 * 解析参数
 */
impl TemplateMatchingArgs {
   
   
    fn parse(args: Vec<String>) -> TemplateMatchingArgs {
   
   
        if args.len() < 2 {
   
   
             panic!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值