#windows #opencv #capture #directx #image #graphics

dxcapture

dxcapture is a library for capturing a Direct3D 11 device on Windows

10 stable releases

1.1.3 Mar 29, 2022
1.1.2 Mar 28, 2022
1.0.5 Mar 28, 2022
1.0.4 Mar 25, 2022

#161 in Rendering

27 downloads per month

MIT license

36KB
697 lines

dxcapture

dxcapture is a library for capturing a Direct3D 11 device on Windows.

[dependencies]
dxcapture = "1.1"

Details

let device = dxcapture::Device::default();
let capture = dxcapture::Capture::new(&device).unwrap();

let raw = loop {
    match capture.get_raw_frame() {
        Ok(raw) => break raw,
        Err(e) => {
            if e == dxcapture::CaptureError::NoTexture {
                // async, so sometimes it's not there.
                continue;
            }
            panic!("{}", e);
        }
    }
};

// taked primary monitor.
// hoge raw

Optional Features

  • img - Enable features that depend on the image crate

    dxcapture = { version = "1.1", features = ["img"] }
    
    let device = dxcapture::Device::default();
    let capture = dxcapture::Capture::new(&device).unwrap();
    
    let image = capture.wait_img_frame().expect("Failed to capture");
    let path = "image.png";
    
    image.data.save(path).expect("Failed to save");
    

    Read more with image

  • mat - Enable features that depend on the opencv crate

    dxcapture = { version = "1.1", features = ["mat"] }
    
    use opencv::prelude::*;
    use opencv::imgcodecs::{ imwrite, IMWRITE_PNG_STRATEGY_DEFAULT };
    
    let device = dxcapture::Device::default();
    let capture = dxcapture::Capture::new(&device).unwrap();
    
    let mat = capture.wait_mat_frame().expect("Failed to capture");
    let path = "image.png";
    
    imwrite(path, &mat.data, &vec![IMWRITE_PNG_STRATEGY_DEFAULT].into()).expect("Failed to save");
    

    Read more with opencv

Exmaples

Documentation

License

Special Thanks

This crate completed thanks to wgc-rust-demo

Dependencies

~130MB
~2M SLoC