mirror of
https://github.com/hanzoai/rustautogui.git
synced 2026-10-30 18:23:05 +00:00
* 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]>
40 lines
1.2 KiB
Rust
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();
|
|
}
|