{"id":29009776,"url":"https://github.com/ughrima/visionx","last_synced_at":"2026-04-10T20:44:23.793Z","repository":{"id":299143651,"uuid":"1002186358","full_name":"ughrima/VisionX","owner":"ughrima","description":"VisionX is an Android app that uses device camera and applies filters like grayscale, edge detection, blur, invert colors in real-time. It combines Java (for the app), OpenGL shaders (for fast graphics), and OpenCV (for image processing) while using native C++ code via JNI.","archived":false,"fork":false,"pushed_at":"2025-06-24T20:51:41.000Z","size":68806,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-24T21:42:22.801Z","etag":null,"topics":["android-application","java","jni-android","opencv","opengl-shaders"],"latest_commit_sha":null,"homepage":"","language":"Java","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/ughrima.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-14T22:45:22.000Z","updated_at":"2025-06-24T20:51:44.000Z","dependencies_parsed_at":"2025-06-14T23:42:31.418Z","dependency_job_id":null,"html_url":"https://github.com/ughrima/VisionX","commit_stats":null,"previous_names":["ughrima/visionx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ughrima/VisionX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ughrima%2FVisionX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ughrima%2FVisionX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ughrima%2FVisionX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ughrima%2FVisionX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ughrima","download_url":"https://codeload.github.com/ughrima/VisionX/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ughrima%2FVisionX/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261898172,"owners_count":23226855,"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":["android-application","java","jni-android","opencv","opengl-shaders"],"created_at":"2025-06-25T15:21:53.099Z","updated_at":"2026-04-10T20:44:23.734Z","avatar_url":"https://github.com/ughrima.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VisionX\n\n**VisionX** is an Android app that uses device camera and applies filters like grayscale, edge detection, blur, invert colors in real-time. It combines Java (for the app), OpenGL shaders (for fast graphics), and OpenCV (for image processing) while using native C++ code via JNI.\n\n\n## Features Implemented\n\n- **Raw camera feed** — See the camera feed as it is.\n- **Grayscale mode** — Turns colors into black \u0026 white.\n- **Canny edge detection** — Detects and draws edges (like sketch lines, White over Black).\n- **Invert colors** — Flips colors (black becomes white, white becomes black).\n- **Gaussian blur** — Smoothens/Blurs the image.\n- **Thresholding** — Creates a sharp black \u0026 white (binary) image.\n- **Button** — Switch filters easily by clicking and see the mode name change.\n- **FPS counter** — Shows how fast the frames are processed at the bottom.\n\n\n## Preview\n\n| Raw Mode | Grayscale | Canny Edge Detection |\n|----------|-----------|---------------------|\n| ![Raw](https://github.com/user-attachments/assets/1fc67527-0116-4525-9bb7-e665761093d1) | ![Grayscale](https://github.com/user-attachments/assets/995925bf-d4db-4be1-a4ab-1cc90aca9d9e) | ![Canny](https://github.com/user-attachments/assets/71fe3fef-52a0-4740-9c74-ee4c55bf1bb1) |\n\n| Invert | Blur | Threshold |\n|--------|-------|-----------|\n| ![Invert](https://github.com/user-attachments/assets/4a8dcda5-7b45-4b5d-a375-fdea4049cbd1) | ![Blur](https://github.com/user-attachments/assets/61e6b3df-7e79-4750-883d-61fd4bdd91ed) | ![Threshold](https://github.com/user-attachments/assets/b030c138-2c37-41a6-abd7-3f522017e7ff) |\n\n\n\n## Live Demo \n[Download demo.mp4](demo.mp4)\n\n## Setup\n\n### Clone this repo\n\n```bash\ngit clone https://github.com/ughrima/VisionX.git\ncd VisionX\n````\n\n### Install Prerequisites\n\n* **Android Studio** (latest stable version recommended)\n* **NDK + CMake**\n  * Open Android Studio\n  * Go to `Tools \u003e SDK Manager \u003e SDK Tools`\n  * Check  `NDK (Side by side)` and `CMake`\n* **OpenCV**\n  * `libopencv_java4.so` files are included under `app/src/main/jniLibs/`\n  * No extra download needed.\n  \n### 3️⃣ Build and run\n\n1. Open the folder in Android Studio\n2. Let Gradle sync — it will recognize the NDK and C++ setup\n3. Make sure Your device is connected via USB and USB debugging is ON.\n4. Allow the app to use camera.\n5. Press the green Run button, or Build an APK via\n**Build \u003e Build Bundle(s) / APK(s) \u003e Build APK(s)**\n7. Done!  The app will open on your device.\n\n## How it works\n\n### Frame flow\n\n```mermaid\ngraph TD;\nA[Camera2 API gets frames] ==\u003e B[Send frame to native code via JNI]\nB  ==\u003e C[OpenCV applies filters]\nC ==\u003e  D[Return frame to Java and display via GLSurfaceView]\nD ==\u003e  E[Shaders apply fast color effects]\n\n```\n\n## Files\n\n* `MainActivity.java` — The main screen. Opens camera, sets up buttons, FPS counter, and works with the native code.\n* `native-lib.cpp` — C++ code that uses OpenCV to process images (grayscale, edge detection etc).\n* `CMakeLists.txt` — Tells CMake how to build  C++ code for Android.\n* `build.gradle.kts` — The Gradle build file. Handles dependencies, build settings.\n* `AndroidManifest.xml` — Declares app permissions (like camera), app name, etc.\n* `Render.java` — Handles OpenGL drawing. Displays processed frames on screen.\n* `Shade.java` — Loads shader files (fragment/vertex) into OpenGL.\n* `fragment.glsl` — Shader for coloring pixels (invert, grayscale).\n* `vertex.glsl` — Shader for positioning (where things are drawn).\n* `activity_main.xml` — Defines where button, FPS text, camera view go on screen.\n\n ## Deployment\n\n[Download VisionX APK from GitHub Releases](https://github.com/ughrima/VisionX/releases/latest)\n\n## Some References \n\n- [Android Developers Documentation](https://developer.android.com/docs)\n- [Android NDK](https://developer.android.com/ndk)\n- [GLSurfaceView \u0026 OpenGL ES](https://developer.android.com/reference/android/opengl/GLSurfaceView) \n- [CMake for Android](https://developer.android.com/studio/projects/install-ndk#cmake)\n- [Mermaid JS](https://mermaid.js.org/)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fughrima%2Fvisionx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fughrima%2Fvisionx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fughrima%2Fvisionx/lists"}