#include "runner_mask_output.h" #include #include #include #include int main() { unsigned char data[]={255,0,99, 0,255,99}; // Padded rows; preserve holes. yolo_mask_view_v1_t mask{};mask.data=data;mask.width=mask.height=2; mask.row_stride_bytes=3;mask.origin_x=1;mask.origin_y=1; std::vector image(4*4*4,100); assert(runner_mask_output::blend(image.data(),4,4,16,4,mask,0)); assert(image[20]==61 && image[21]==147 && image[22]==108 && image[23]==100); assert(image[24]==100 && image[36]==100 && image[40]!=100); auto invalid=mask;invalid.origin_x=4; assert(!runner_mask_output::blend(image.data(),4,4,16,4,invalid,0)); const auto path=std::filesystem::temp_directory_path()/"yolo-instance-mask-contract.pgm"; assert(runner_mask_output::save(path,mask)); std::ifstream file(path,std::ios::binary); std::vector bytes((std::istreambuf_iterator(file)),{}); const std::string header="P5\n2 2\n255\n"; assert(bytes.size()==header.size()+4); assert(std::equal(header.begin(),header.end(),bytes.begin())); assert(bytes[header.size()]==255 && bytes[header.size()+1]==0 && bytes.back()==255); file.close();std::filesystem::remove(path); }