{"id":21197323,"url":"https://github.com/dvx/skrch","last_synced_at":"2025-07-10T05:31:31.216Z","repository":{"id":7835451,"uuid":"9206912","full_name":"dvx/skrch","owner":"dvx","description":"sketch + search = skrch","archived":false,"fork":false,"pushed_at":"2013-04-04T01:25:52.000Z","size":124,"stargazers_count":20,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-05-25T16:33:55.333Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dvx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-03T23:03:33.000Z","updated_at":"2023-03-09T14:20:19.000Z","dependencies_parsed_at":"2022-08-28T04:21:24.161Z","dependency_job_id":null,"html_url":"https://github.com/dvx/skrch","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvx%2Fskrch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvx%2Fskrch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvx%2Fskrch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvx%2Fskrch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvx","download_url":"https://codeload.github.com/dvx/skrch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225623031,"owners_count":17498167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T19:43:31.183Z","updated_at":"2024-11-20T19:43:31.751Z","avatar_url":"https://github.com/dvx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"sketch + search = skrch\n---\nskrch was an idea I had in mid-2011 (in a dream! true story). It was supposed to be an image search-engine that could search by:\n\n1. Reverse-image lookup\n2. Sketching\n3. (A mixture of the two?)\n\nI soon discovered OpenCV and decided to give it a try. Even though the server has been taken down, here's a video demonstration:\n\n[![ScreenShot](http://skrch.dvt.name/skrch_ss.png)](http://youtu.be/3WswSywx6TI)\n\nthe code\n---\nThe server is written in C++ and uses boost for serving HTTP, file system utilities, and serialization (the image data, once calculated, is stored locally), and OpenCV for the heavy lifting (canny filters, gaussian filters, histogram analysis).\n\nThe client is written in JS and won't be particularly useful to anyone devoid of its HTML counterpart found at http://skrch.dvt.name\n\nhow it works\n---\n1. skrch looks at all images found in `img_r`\n2. Every image has a histogram and some metadata (found in `img_r/db.txt`) that gets stored in `db`\n3. Once the analysis is finalized, the server starts up and begins accepting requests\n4. The server accepts `POSTDATA` which (should) contain a needle image\n5. The needle is compared with images in the haystack, and a hierarchy of \"close\" JSONified matches is returned back to the client\n\nIf there already exists a `db` file, steps (1) and (2) are forgone.\n\ncaveats\n---\nMemory problems. Only with around 10,000 images, requests would take more than 800ms and memory usage (on the server) would shoot up to 1-2gb. Unfortunately, no mainstream database software exists for histograms. (That would be a fun project.)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvx%2Fskrch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvx%2Fskrch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvx%2Fskrch/lists"}