{"id":17309261,"url":"https://github.com/ihhub/penguinv","last_synced_at":"2025-10-30T05:37:27.604Z","repository":{"id":46602621,"uuid":"60750806","full_name":"ihhub/penguinV","owner":"ihhub","description":"Computer vision library with focus on heterogeneous systems","archived":false,"fork":false,"pushed_at":"2024-03-18T15:05:56.000Z","size":4076,"stargazers_count":119,"open_issues_count":106,"forks_count":90,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-02T05:09:48.956Z","etag":null,"topics":["avx","computer-vision","cpp","cuda","gpu","hacktoberfest","heterogeneous-systems","image-processing","opencl","python","simd","sse","thread-pool"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ihhub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-09T04:56:17.000Z","updated_at":"2024-10-30T20:34:27.000Z","dependencies_parsed_at":"2024-10-31T08:04:19.346Z","dependency_job_id":"efdafefe-0052-4a4a-a7fb-0d88e6fd1ec1","html_url":"https://github.com/ihhub/penguinV","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihhub%2FpenguinV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihhub%2FpenguinV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihhub%2FpenguinV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihhub%2FpenguinV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ihhub","download_url":"https://codeload.github.com/ihhub/penguinV/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247999864,"owners_count":21031046,"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":["avx","computer-vision","cpp","cuda","gpu","hacktoberfest","heterogeneous-systems","image-processing","opencl","python","simd","sse","thread-pool"],"created_at":"2024-10-15T12:27:53.697Z","updated_at":"2025-10-30T05:37:27.516Z","avatar_url":"https://github.com/ihhub.png","language":"C++","readme":"penguinV\n======\nPenguinV is a powerful **image processing** library with focus on heterogeneous systems.\nThe library is designed with an idea to have common API for CPUs and GPUs simplifying developer's work on context switching between devices.\nCore features of the library:\n\n- heterogeneous system support (CPUs and GPUs)\n- CUDA, OpenCL and SIMD (SSE, AVX, NEON) support\n- [Python support](https://github.com/ihhub/penguinV/tree/master/src/python)\n- [multithreading support](#multithreading-support)\n- cross-platform (Windows, Linux, MacOS)\n- compactness\n- ability to process separate parts of an image (ROI)\n- user-defined image types and more.\n\nWhat can it do?\n---------------------------\nYou can develop a software within minutes of your time to obtain **high performance** and **accuracy**.\nIt is up to developer to decide which device (CPU or GPU) would execute the code or give such control to the library.\n\nExample code for below images could look like this:\n```cpp\nImage red = ExtractChannel( image, RED_CHANNEL );\nImage binary = Threshold( red, // threshold\n                          GetThreshold( // get weighted threshold\n                              Histogram( red ) ) ) ); // get image histogram\n\nBlobDetection detection;\n...\ndetection.find( binary );\n...\nImage rgb = ConvertToRgb( binary );\nrgb = BitwiseAnd( image, rgb );\n...\nrgb = BitwiseOr( image, rgb );\n```\n\nThe trick behind the code is that you have a **single interface** for CPU as well as for GPU!\n\n![one](data/readme/1_original.png) ![two](data/readme/2_red_channel.png) ![three](data/readme/3_red_threshold.png) ![four](data/readme/4_blob.png)\n![five](data/readme/5_logical_and.png) ![six](data/readme/6_result.png)\n\nContribution\n---------------------------\n[![Actions Status](https://github.com/ihhub/penguinv/workflows/GitHub%20Actions/badge.svg)](https://github.com/ihhub/penguinv/actions)\n\nWe welcome and appreciate any help, even if it's a tiny text or code change.\nPlease read [contribution](https://github.com/ihhub/penguinV/blob/master/CONTRIBUTING.md) page before starting work on a pull request.\nNot sure what to start with? Feel free to refer to \u003ckbd\u003e[good first issue](https://github.com/ihhub/penguinV/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\u003c/kbd\u003e or \u003ckbd\u003e[help wanted](https://github.com/ihhub/penguinV/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\u003c/kbd\u003e tags.\n\nRequirements\n---------------------------\nTo compile the source code your compiler must support at least **C++ 11** version.\n\nHow to install\n---------------------------\nThe library is distributed in the form of source code. To use the library you need to include necessary files into your application project. That's it! No more extra moves!\n\nHow to compile an example\n---------------------------\nOpen README.md file in any of [example](https://github.com/ihhub/penguinV/tree/master/examples) directories and follow instructions.\n\nMultithreading support\n---------------------------\nThe library contains it's own thread pool which creates multiple tasks to run image processing function for a given image via multiple threads. Such tenchnique gives a big boost on machines with major CPU usage.\n\nGPU support\n---------------------------\nAll source code and descriptions related to CUDA or OpenCL are located in separate [**src/cuda**](https://github.com/ihhub/penguinV/tree/master/src/cuda) and [**src/opencl**](https://github.com/ihhub/penguinV/tree/master/src/opencl) directories respectively. Read full description about CUDA or OpenCL support in **README** file in the directory.\n\nLicense\n---------------------------\nThis project is under 3-clause BSD License. Please refer to file [**LICENSE**](https://github.com/ihhub/penguinV/blob/master/LICENSE) for more details.\n\nAPI description\n---------------------------\nDirectory [**doc**](https://github.com/ihhub/penguinV/tree/master/doc) contains latest and valid information and description of library's API.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihhub%2Fpenguinv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fihhub%2Fpenguinv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihhub%2Fpenguinv/lists"}