let g_scale = g as f64 * self.scaler;
let b_scale = b as f64 * self.scaler;
- println!("scaler {}", self.scaler);
- println!("strides {:?}", self.strides);
- println!("r scale {}", r_scale);
- println!("g scale {}", g_scale);
- println!("b scale {}", b_scale);
-
let r_upper = r_scale.ceil();
let g_upper = g_scale.ceil();
let b_upper = b_scale.ceil();
let g_lower = g_scale.floor();
let b_lower = b_scale.floor();
- println!("r upper {}", r_upper);
- println!("g upper {}", g_upper);
- println!("b upper {}", b_upper);
-
- println!("r lower {}", r_lower);
- println!("g lower {}", g_lower);
- println!("b lower {}", b_lower);
-
let r_remainder = r_scale.fract();
let g_remainder = g_scale.fract();
let b_remainder = b_scale.fract();
- println!("r remainder {}", r_remainder);
- println!("g remainder {}", g_remainder);
- println!("b remainder {}", b_remainder);
-
let i_upper = (
(r_upper * self.strides[0] as f64) +
(g_upper * self.strides[1] as f64) +
(b_lower * self.strides[2] as f64)
) as usize;
- println!("i upper {}", i_upper);
- println!("i lower {}", i_lower);
-
let r_upper = self.lut[i_upper] as f64;
let g_upper = self.lut[i_upper+1] as f64;
let b_upper = self.lut[i_upper+2] as f64;
let g_lower = self.lut[i_lower+1] as f64;
let b_lower = self.lut[i_lower+2] as f64;
- println!("r upper real {}", r_upper);
- println!("g upper real {}", g_upper);
- println!("b upper real {}", b_upper);
-
- println!("r lower real {}", r_lower);
- println!("g lower real {}", g_lower);
- println!("b lower real {}", b_lower);
-
[
(((r_upper - r_lower) * r_remainder) + r_lower) as u8,
(((g_upper - g_lower) * g_remainder) + g_lower) as u8,
]
}
}
+
+pub fn _cast (r: u8, g: u8, b: u8) -> [u8; 3] {
+ let mut r = r as f64 / 255.;
+ let mut g = g as f64 / 255.;
+ let mut b = b as f64 / 255.;
+
+ r = r.powi(2) * 255.;
+ g = g.powi(2) * 255.;
+ b = b.powi(2) * 255.;
+
+ [r as u8, g as u8, b as u8]
+}
mod correct;
use crate::correct::Correcter;
+use crate::correct::_cast;
const WINDOW_SIZE: usize = 128;
const CHUNK_SIZE: usize = 72;
corrector: Correcter::new("./cube.npy"),
camera_buffer: vec![0u8; IMAGE_AREA],
- camera: Camera::new("/dev/video2").unwrap(),
+ camera: Camera::new("/dev/v4l/by-id/usb-MACROSILICON_USB_Video-video-index0").unwrap(), // should be video2
chunks: SPECTOGRAM_AREA
};
unsafe{ApplyHomography (self.camera_buffer.as_ptr() as usize, self.data.as_ptr() as usize, self.homography.as_ptr() as usize);}
- for i in 0..self.camera_buffer.len()/3 {
- let mut r = self.camera_buffer[i*3];
- let mut g = self.camera_buffer[(i*3)+1];
- let mut b = self.camera_buffer[(i*3)+3];
+ for i in 0..(self.data.len()-1)/3 {
+ let mut r = self.data[i*3];
+ let mut g = self.data[(i*3)+1];
+ let mut b = self.data[(i*3)+3];
[r, g, b] = self.corrector.correct(r, g, b);
- self.camera_buffer[i*3] = r;
- self.camera_buffer[(i*3)+1] = g;
- self.camera_buffer[(i*3)+3] = b;
+ self.data[i*3] = r;
+ self.data[(i*3)+1] = g;
+ self.data[(i*3)+3] = b;
}
}
// rscam gives and empty image if its not prompted a couple times
for _i in 0..10 {
self.camera_buffer = self.camera.capture().unwrap()[..].try_into().expect("Image is wrong size"); //delete assignment
+
}
// enter unsafe and get the homography array
image_array.calibrate();
// open audio file
- let mut reader = hound::WavReader::open("/home/will/Music/Adducci - Around the Horn.wav").unwrap();
+ let mut reader = hound::WavReader::open("/home/will/Downloads/asq.wav").unwrap();
let file_rate = reader.spec().sample_rate;
// setup audio output and build output stream