use crate::common::RegParams;
use leptonica::PixelDepth;
use leptonica::io::ImageFormat;
use leptonica::morph::{close_gray, dilate_gray, erode_gray, open_gray};
#[test]
fn graymorph2_reg_dilate_erode() {
let mut rp = RegParams::new("gmorph2_dilate_erode");
let pix = crate::common::load_test_image("test8.jpg").expect("load test8.jpg");
assert_eq!(pix.depth(), PixelDepth::Bit8);
let orig_mean = pix.average_in_rect(None).expect("average_in_rect") as f64;
let sizes: &[(u32, u32)] = &[(3, 1), (1, 3), (3, 3)];
for &(hsize, vsize) in sizes {
let dilated = dilate_gray(&pix, hsize, vsize).expect("dilate_gray");
let dil_mean = dilated.average_in_rect(None).expect("average dilated") as f64;
rp.compare_values(1.0, if dil_mean >= orig_mean { 1.0 } else { 0.0 }, 0.0);
rp.write_pix_and_check(&dilated, ImageFormat::Jpeg)
.expect("write dilate_gray result");
let eroded = erode_gray(&pix, hsize, vsize).expect("erode_gray");
let ero_mean = eroded.average_in_rect(None).expect("average eroded") as f64;
rp.compare_values(1.0, if ero_mean <= orig_mean { 1.0 } else { 0.0 }, 0.0);
rp.write_pix_and_check(&eroded, ImageFormat::Jpeg)
.expect("write erode_gray result");
}
assert!(rp.cleanup(), "graymorph2 dilate_erode test failed");
}
#[test]
fn graymorph2_reg_open_close() {
let mut rp = RegParams::new("gmorph2_open_close");
let pix = crate::common::load_test_image("test8.jpg").expect("load test8.jpg");
assert_eq!(pix.depth(), PixelDepth::Bit8);
let orig_mean = pix.average_in_rect(None).expect("average_in_rect") as f64;
let sizes: &[(u32, u32)] = &[(3, 1), (1, 3), (3, 3)];
for &(hsize, vsize) in sizes {
let opened = open_gray(&pix, hsize, vsize).expect("open_gray");
let open_mean = opened.average_in_rect(None).expect("average opened") as f64;
rp.compare_values(1.0, if open_mean <= orig_mean { 1.0 } else { 0.0 }, 0.0);
rp.write_pix_and_check(&opened, ImageFormat::Jpeg)
.expect("write open_gray result");
let closed = close_gray(&pix, hsize, vsize).expect("close_gray");
let close_mean = closed.average_in_rect(None).expect("average closed") as f64;
rp.compare_values(1.0, if close_mean >= orig_mean { 1.0 } else { 0.0 }, 0.0);
rp.write_pix_and_check(&closed, ImageFormat::Jpeg)
.expect("write close_gray result");
}
assert!(rp.cleanup(), "graymorph2 open_close test failed");
}