let npy = NpyFile::new(file).unwrap();
let strides = npy.strides().try_into().expect("Wrong number of dimentions!");
- let scaler = npy.shape()[0] as f64 / 255.;
+ let scaler = (npy.shape()[0] - 1) as f64 / 255.;
let data: Vec<u8> = npy.into_vec().unwrap();
}
pub fn correct(&self, r: u8, g:u8, b:u8) -> [u8; 3] {
- let r_scale = r as f64 * self.scaler * self.strides[0] as f64;
- let g_scale = g as f64 * self.scaler * self.strides[1] as f64;
- let b_scale = b as f64 * self.scaler * self.strides[2] as f64;
+ let r_scale = r as f64 * self.scaler;
+ 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!("g remainder {}", g_remainder);
println!("b remainder {}", b_remainder);
- let i_upper = (r_upper + g_upper + b_upper) as usize;
- let i_lower = (r_lower + g_lower + b_lower) as usize;
+ let i_upper = (
+ (r_upper * self.strides[0] as f64) +
+ (g_upper * self.strides[1] as f64) +
+ (b_upper * self.strides[2] as f64)
+ ) as usize;
+ let i_lower = (
+ (r_lower * self.strides[0] as f64) +
+ (g_lower * self.strides[1] as f64) +
+ (b_lower * self.strides[2] as f64)
+ ) as usize;
println!("i upper {}", i_upper);
println!("i lower {}", i_lower);
use rscam::{Camera, Config};
use image::ImageReader;
-use rand::Rng;
-
mod correct;
use crate::correct::Correcter;
#[show_image::main]
fn main () -> Result<(), Box<dyn std::error::Error>> {
-
-
- let mut rng = rand::rng();
-
- let cor = Correcter::new("./cube.npy");
-
- let r = rng.gen_range(0..255) as u8;
- let g = rng.gen_range(0..255) as u8;
- let b = rng.gen_range(0..255) as u8;
-
- println!("{}", r);
- println!("{}", g);
- println!("{}", b);
-
- let c = cor.correct(r, g, b);
-
- println!("{:?}", c);
-
- std::process::exit(1);
-
-
-
// pregenerate the fft transformers
let forward_transform = Radix4::<f32>::new(WINDOW_SIZE, FftDirection::Forward);
let inverse_transform = Radix4::<f32>::new(WINDOW_SIZE, FftDirection::Inverse);