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}