{"slug":"medien-halowerk-com-v1-oss-opencv-robust-planar-homography-c0e463","title":"Fits a 2D projective transform between two point sets with RANSAC at a caller-ch","host":"medien.halowerk.com","method":"POST","resource":"https://medien.halowerk.com/v1/oss-opencv-robust-planar-homography","category":"image","description":"Fits a 2D projective transform between two point sets with RANSAC at a caller-chosen reprojection threshold, and returns both the homography and the inlier mask. The mask is what makes this useful beyond a plain fit: bad correspondences are named rather than quietly averaged in, so a caller can re-r","price_listed":0.002,"price_asked":0.002,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":1226,"reported_calls_30d":0,"reported_payers_30d":0,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"reprojection_threshold":1,"source_points":[[5,10],[35,10],[70,10],[100,10],[5,50],[35,50],[70,50],[100,50],[5,90],[35,90],[70,90],[100,90]],"target_points":[[16.923842707814835,4.081632653061225],[51.986267778322706,4.61010299166258],[91.61041465766635,5.207328833172614],[124.52471482889733,5.703422053231939],[20.74074074074074,39.604938271604944],[55.47445255474452,39.61070559610705],[94.73684210526316,39.61722488038278],[127.35849056603773,39.62264150943396],[24.497795198432144,74.57128858402744],[58.90873973925639,74.07049734427812],[97.81576448243115,73.50427350427351],[180.1498127340824,13.033707865168537]]},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Numeric JSON arrays only. Additionally enforce equal paired dimensions, nondegenerate geometry, maximum 32768 pixels/image, 131072 scalars/array, and 1048576 encoded bytes. No paths or network resources.","properties":{"reprojection_threshold":{"maximum":10,"minimum":0.1,"type":"number"},"source_points":{"items":{"items":{"maximum":1000000000,"minimum":-1000000000,"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":2048,"minItems":4,"type":"array"},"target_points":{"items":{"items":{"maximum":1000000000,"minimum":-1000000000,"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":2048,"minItems":4,"type":"array"}},"required":["source_points","target_points","reprojection_threshold"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"additionalProperties":false,"properties":{"operation":{"const":"robust-planar-homography"},"result":{"additionalProperties":false,"properties":{"homography":{"items":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"},"maxItems":3,"minItems":3,"type":"array"},"inlier_count":{"maximum":2048,"minimum":4,"type":"integer"},"inlier_mask":{"items":{"type":"boolean"},"maxItems":2048,"minItems":4,"type":"array"},"warnings":{"items":{"maxLength":1024,"type":"string"},"maxItems":8,"minItems":1,"type":"array"}},"required":["homography","inlier_mask","inlier_count","warnings"],"type":"object"},"runtime_ms":{"minimum":0,"type":"number"},"upstream":{"additionalProperties":false,"properties":{"binary_sha256":{"const":"1fd4eb220f9986baa0ea0492cbcbedf85b868e792cbcac5f69e10d067a2f956c"},"components":{"const":["findHomography"]},"numpy_version":{"const":"2.5.0"},"package_version":{"const":"4.13.0.92"},"project":{"const":"OpenCV"},"version":{"const":"4.13.0"}},"required":["project","version","package_version","binary_sha256","numpy_version","components"],"type":"object"}},"required":["operation","result","upstream","runtime_ms"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-10-25","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.002,"price_match":true,"latency_ms":1226,"error":null}],"description_full":"Fits a 2D projective transform between two point sets with RANSAC at a caller-chosen reprojection threshold, and returns both the homography and the inlier mask. The mask is what makes this useful beyond a plain fit: bad correspondences are named rather than quietly averaged in, so a caller can re-run detection, drop a frame or raise an alarm. Suitable for document rectification, planar tracking and image stitching where the scene really is flat.","last_updated":"2026-10-25T16:43:15.804Z","schemes":["exact"]}