code wiki / (root) / nx_outfit_coverage_test.nx

nx_outfit_coverage_test.nx source

↩ module page · 46 lines · 1392 B

1// nx_outfit_coverage_test.nx -- smoke for outfit-coverage detector. 2 3import "nx_syscalls.nx" 4import "nx_image.nx" 5import "nx_outfit_coverage.nx" 6 7func fill_rect_skin(img: *Image, x0: i64, y0: i64, x1: i64, y1: i64) -> i64 { 8 var y: i64 = y0 9 while y < y1 { 10 var x: i64 = x0 11 while x < x1 { 12 nx_image_set(img, x, y, 0, 200); nx_image_set(img, x, y, 1, 150); nx_image_set(img, x, y, 2, 130) 13 x = x + 1 14 } 15 y = y + 1 16 } 17 return 0 18} 19 20func fill_black(img: *Image) -> i64 { 21 var y: i64 = 0 22 while y < img.height { 23 var x: i64 = 0 24 while x < img.width { 25 nx_image_set(img, x, y, 0, 0); nx_image_set(img, x, y, 1, 0); nx_image_set(img, x, y, 2, 0) 26 x = x + 1 27 } 28 y = y + 1 29 } 30 return 0 31} 32 33func main() -> i64 { 34 let v: *OutfitCoverageVerdict = (sys_mmap(96)) as *OutfitCoverageVerdict 35 36 // T1: skin-only torso, black bg -> high coverage (non-skin in expanded bbox) 37 let img1: *Image = nx_image_alloc(64, 64, 3) 38 fill_black(img1) 39 fill_rect_skin(img1, 20, 20, 45, 45) 40 nx_outfit_coverage_compute(img1, v) 41 if v.torso_present != 1 { return 1 } 42 // Black around torso is "non-skin" -> coverage > 0 43 if v.coverage_q10 == 0 { return 2 } 44 45 return 0 46}