2020-08-19 21:47:29 +02:00
|
|
|
|
|
|
|
#[macro_use] extern crate log;
|
|
|
|
#[macro_use(s)] extern crate ndarray;
|
|
|
|
extern crate stopwatch;
|
|
|
|
use stopwatch::{Stopwatch};
|
|
|
|
|
|
|
|
use simplelog::*;
|
|
|
|
use image;
|
|
|
|
|
|
|
|
mod visualhaar;
|
2020-08-25 07:49:27 +02:00
|
|
|
mod heatmap;
|
2020-08-19 21:47:29 +02:00
|
|
|
|
|
|
|
// use std::fs::File;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
CombinedLogger::init(
|
|
|
|
vec![
|
|
|
|
TermLogger::new(LevelFilter::Info, Config::default(), TerminalMode::Mixed),
|
|
|
|
// WriteLogger::new(LevelFilter::Info, Config::default(), File::create("my_rust_binary.log").unwrap()),
|
|
|
|
]
|
|
|
|
).unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
warn!("test");
|
2020-10-02 10:39:59 +02:00
|
|
|
let haar = visualhaar::HaarClassifier::from_xml("../haarcascade_frontalface_alt2.xml").unwrap();
|
2020-08-19 21:47:29 +02:00
|
|
|
// println!("Haar: {:?}", haar);
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-10-01 16:21:36 +02:00
|
|
|
let frame = image::open("test.png");
|
2020-08-19 21:47:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
// let vec: Vec<u8> = frame.data().to_vec();
|
|
|
|
// Convert to Nannou ImageBuffer
|
|
|
|
// let img_buffer: Option<image::ImageBuffer<image::Rgb<u8>, Vec<u8>>> = image::ImageBuffer::from_raw(640,480, frame.data().to_vec());
|
|
|
|
|
|
|
|
match frame {
|
|
|
|
Err(e) => {
|
|
|
|
// no imagebuffer for this update. set haar outcomes to empy
|
|
|
|
error!("{:?}",e);
|
|
|
|
}
|
|
|
|
Ok(ib) => {
|
|
|
|
// let
|
|
|
|
// ib.map( nannou::image::DynamicImage::ImageRgb8);
|
|
|
|
// let ib_bw = nannou::image::imageops::grayscale(&ib);
|
|
|
|
// _model.image = Some(nannou::image::DynamicImage::ImageLuma8(ib_bw));
|
|
|
|
let i = ib.as_rgb8().unwrap().clone();
|
2020-09-23 12:41:24 +02:00
|
|
|
let hm = Some(heatmap::Heatmap::new(heatmap::ColorMaps::Plasma));
|
2020-10-02 13:33:03 +02:00
|
|
|
let mut sw = Stopwatch::start_new();
|
2020-09-23 12:41:24 +02:00
|
|
|
let image = haar.scan_image(i, &hm).unwrap().dynamic_img;
|
2020-10-02 13:33:03 +02:00
|
|
|
info!("Scanning for faces took {}ms", sw.elapsed_ms());
|
2020-10-01 16:21:36 +02:00
|
|
|
image.save("test-output.png");
|
2020-08-25 07:49:27 +02:00
|
|
|
|
|
|
|
// let hm = heatmap::Heatmap::new(heatmap::ColorMaps::NipySpectral);
|
2020-09-23 12:41:24 +02:00
|
|
|
// let hm = heatmap::Heatmap::new(heatmap::ColorMaps::TraficLight);
|
|
|
|
// sw.restart();
|
|
|
|
// let hm = h;
|
|
|
|
// let image_hm = hm.convert_image(image);
|
|
|
|
// image_hm.save("/home/ruben/Documents/Projecten/2020/rust/lena_orig-output-hm.png");
|
|
|
|
// info!("Generating Heatmap {}ms", sw.elapsed_ms());
|
2020-08-19 21:47:29 +02:00
|
|
|
// _model.image = Some(nannou::image::DynamicImage::ImageRgb8(ib));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|