Files
9e2d31ad6d V2.5.0 - Opencl + more github actions + code refactor + tests + custom threshold + lite + dev
* opencl first buggy implementation

* more work on opencl. Buggy atm

* WORKING ALGORITHM ATM but slow

* working opencl code with implemented 2 step fully

* first reworks. addition of new fields in struct and some cleanup

* more changes. added a struct for memory buffers, creation of it, new functions for gui dedicated opencl template match

* more changes, no errors

* added to main functions in lib. Not tested yet

* first tests done, code working. Needs more optimisation

* some testing prints, code retested after fix in time measurement. Looks promising

* revert back

* tested optimisations reimplemented and working

* a bit more optimisations

* added opencl feature

* fmt

* added change ocl state, graceful exits

* windows fix

* small optimisation

* macos fix

* different variations of tests

* currently a fine solution to auto determine treshold of fast segmentation

* derivative activation only in opencl mode

* readme update

* add v2 algorithm

* added table of contents to readme

* update changelog (no date included yet)

* moved all the additional v2 buffers  under GpuMemoryPointers struct

* additional work on v2

* unifying v1 and v2 kernels + other data

* working on adding devices info

* more work done on detecting devices, creating kernels and moving kernels to precalculated

* working state of code. Implemented different OCL things, Kernel building outside of OCL Kernel storage, most of logic for V2.

* added v2 into logic. remaining to create standalone lib.rs functions

* various fixes

* added precision to buffer passed to GPU and updated

* adding more matchmodes and covering

* cleaning up code

* moving some enums to structs

* changes on lots of stuff, including changing device for OCL

* implemented lite feature

* changes on lite code, removed problems

* renamed template match

* cleaned unnecesary conditions

* fixed issue with memory not cleaned up on v2

* readme update and fix on matchmode

* fix for region on ocl matching

* fixes for ltie mode

* added opencl example

* fix for v2 opencl

* fix on opencl device choice to not take cpu

* lite fixes on macos

* linux fixes

* windows fix

* moved files to CORE folder

* full code restructure

* full code restructure

* started with testing

* more tests

* additional mac tests

* linux additions

* linux fixes + cargo.toml editing

* more fixes

* clippy fixes

* github action update

---------

Co-authored-by: DavorMar <[email protected]>
2025-04-27 14:00:11 +02:00

40 lines
1.2 KiB
Rust

#![cfg(feature = "opencl")]
use rustautogui;
fn main() {
//initiate gui
let mut gui = rustautogui::RustAutoGui::new(false).unwrap();
// prepare and store template with Opencl matchmode VERSION 2 and custom threshold of 0.8
gui.store_template_from_file_custom(
"test.png",
Some((500, 100, 1000, 700)),
rustautogui::MatchMode::SegmentedOclV2,
"test_img",
0.8,
)
.unwrap();
// store another image with Opencl VERSION 1 with automatic determination of threshold
gui.store_template_from_file(
"test2.png",
None,
rustautogui::MatchMode::SegmentedOcl,
"test_img2",
)
.unwrap();
// store third template with no opencl, which will run on cpu
gui.store_template_from_file(
"test3.png",
None,
rustautogui::MatchMode::Segmented,
"test_img3",
)
.unwrap();
// execute image searches in completely same pattern. Using opencl is determined in preparation phase
gui.find_stored_image_on_screen(0.9, "test_img").unwrap();
gui.find_stored_image_on_screen(0.9, "test_img2").unwrap();
gui.find_stored_image_on_screen(0.9, "test_img3").unwrap();
}