Locate a pattern image inside a larger image even when it is scaled, rotated or
Locate a pattern image inside a larger image even when it is scaled, rotated or viewed at an angle: ORB or SIFT feature matching plus cv2.findHomography with RANSAC. Returns whether it was found, the 3x3 homography (pattern pixels to image pixels), the four projected corners, the bounding box, and the inlier count as confidence. Use it to find a UI element, logo or object in a screenshot or photo.
Answeringour last check, 2026-10-03
1 of 1checks answered this week
971 msmedian answer time
$0.004listed price per call
$0.004price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://visionflow-match.saastemly.com/v1/homography
| Category | Image and media |
|---|---|
| Provider host | visionflow-match.saastemly.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-03 | valid payment request | 402 | $0.004 | 971 ms |
Example input (from the provider)
{
"body": {
"detector": "sift",
"image": "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",
"template": "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAwCAAAAACEICPDAAADAklEQVRIx61UT0gUURz+Znfazdyx0Ex3U1smVqJCKwn6c5FCCaKDoYdOEh7WywQiQh6UisKgS7QgLLSXQrpIdPTPISIiiAqlSHJptbINRTR1E1m3fc0b58/OOjM7rv6YefPmzft9v+/73pvHPIUUftq0ARGYxSjQIHWiysggbRzyyzS2HFJ+twLgzzV9VOlEM/Obo46MOZYKoCjQ5YsS/PYI0Jg0yBc98PvptUHAUsEhCSGqz5dM1MpHctMI6PPhsGl5A0oN+OsA9BYGg1kIJvlmDILShVAoJA+MqW1Alx9grXjfS8Px0Iklgmb3shvJmaqkC31YZV3N6hzmtfEmoPXDV4uc6yvVB98TYKWmdOGL1/2r5zmZiVfe0Cw1YxCWRNytQM9ExWlg+WMxPlV7gZ6TX9NcfcaKqACRtsgmhLT4vPhdENt2rzORLge45JrPM/02DiEa2JjH6vdAr4ZQNgt0uP+tdYj9xflHvg/fLg0nnGyyyEO/hjAk5NoHZcAel/f8C7E7XOsDQ5AACDzK95AeYPEVxqfoBCkIkTrsrr/BqVmkhi4DvoUBYJX0CsLhswKtLugkpH78SU3UyekgjAjBUBHk5e4SvCk8BZS74pUkfq4gLUbKKSiFZYDV/jXHZOJnnSaAofcC8OQWi5Er4kvfkegYCvbh+hLeDTS1btoHgzWB+zeZXsKoHGjM0vXYGOkTV6WppL/Lo3dK9oAk57l5bh2qCYxqJOS/ohtoOVp2OytfYfB5eGnveqqg5TGRUhUeeg6GITM43l7ceeFMZ5VSmqhUwhoHKwCgHvuPZThIMkhYIigAhSfAezXtDKPmh61PGhsnkrUIO0eaghDLF0BGiBki2DtUJQQ+bwmailjeANtaBYVCmDeiwMI+wtYYcAZjvH0AjqOXQcS2ZyJvlwFnqmIThSwT78jPB7TpyncZ5yw1xHIs45x0t/4eaazNayOp1Rtt2ugwyRcPl3GTmrHt/Qt8FglTAFMKvJWJJv4/079eM2dwYCd/51pzG3f0QPkPRu/dDgU3nB4AAAAASUVORK5CYII="
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"detector": {
"description": "Keypoint detector and descriptor: orb (default, fast, binary descriptors, Hamming distance) or sift (slower, better with scale changes, L2 distance)",
"enum": [
"orb",
"sift"
],
"type": "string"
},
"image": {
"description": "Base64 of a PNG, JPEG, BMP or WebP file (a data: URI also works). At most 4 million pixels and about 2 MB. Alpha is dropped.",
"type": "string"
},
"max_features": {
"description": "Most keypoints kept per image, 100-5000 (default 2000)",
"type": "integer"
},
"min_inliers": {
"description": "Fewest RANSAC inliers for found to be true, 4-200 (default 10)",
"type": "integer"
},
"ratio": {
"description": "Lowe's ratio test threshold, 0.5-0.95 (default 0.75): a match is kept when its distance is below ratio times the second-best distance",
"type": "number"
},
"reproj_threshold": {
"description": "RANSAC reprojection error in pixels below which a match is an inlier, 0.5-20 (default 3)",
"type": "number"
},
"template": {
"description": "Base64 of the pattern to find, same formats. At most 1 million pixels and about 1 MB. Needs visible texture or corners; a flat-coloured pattern has no features.",
"type": "string"
}
},
"required": [
"image",
"template"
]
},
"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": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}