#include "yolo_runtime.h" #include #include #include #include #include static yolo_mask_view_v1_t view(const unsigned char* data, int w, int h, int stride, int x=0, int y=0) { yolo_mask_view_v1_t m{}; m.struct_size=sizeof(m); m.version=YOLO_MASK_VIEW_VERSION; m.data=data; m.width=w; m.height=h; m.row_stride_bytes=stride; m.origin_x=x; m.origin_y=y; return m; } int main() { // Input padding contains nonbinary sentinels; holes and disconnected pixels remain intact. const unsigned char a[]={255,0,255,99, 0,255,0,99, 255,0,255,99}; const unsigned char b[]={255,255,0,99, 0,255,0,99, 255,0,0,99}; const unsigned char c[]={255,0,0,99, 0,255,0,99, 0,0,255,99}; std::vector masks={view(a,3,3,4,1,1),view(b,3,3,4,1,1),view(c,3,3,4,1,1)}; const int w=5,h=5,stride=17; std::vector rgb(stride*h,77); yolo_error_info_v1_t error{};error.struct_size=sizeof(error);error.version=YOLO_ERROR_INFO_VERSION; const auto compose=[&](uint32_t n) { return yolo_masks_compose_rgb_ids(masks.data(),n,w,h,rgb.data(),stride,rgb.size(),&error); }; // Independently reconstruct each membership from the channels and compare every input pixel. for(uint32_t n=1;n<=3;++n) { assert(compose(n)==YOLO_STATUS_OK); for(int y=0;y expected,actual; for(uint32_t i=0;i=m.origin_x && x=m.origin_y && y