{"id":14977678,"url":"https://github.com/h33p/ofps","last_synced_at":"2025-10-28T05:30:57.069Z","repository":{"id":55528740,"uuid":"464253957","full_name":"h33p/ofps","owner":"h33p","description":"Optical Flow Processing Stack","archived":false,"fork":false,"pushed_at":"2022-08-09T09:22:34.000Z","size":2825,"stargazers_count":74,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-19T18:09:56.361Z","etag":null,"topics":["computer-vision","motion-estimation","optical-flow"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/h33p.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":"2022-02-27T21:08:14.000Z","updated_at":"2025-08-28T09:48:01.000Z","dependencies_parsed_at":"2022-08-15T02:40:12.716Z","dependency_job_id":null,"html_url":"https://github.com/h33p/ofps","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/h33p/ofps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h33p%2Fofps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h33p%2Fofps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h33p%2Fofps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h33p%2Fofps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/h33p","download_url":"https://codeload.github.com/h33p/ofps/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h33p%2Fofps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281178929,"owners_count":26456678,"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","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["computer-vision","motion-estimation","optical-flow"],"created_at":"2024-09-24T13:56:07.722Z","updated_at":"2025-10-28T05:30:56.526Z","avatar_url":"https://github.com/h33p.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Optical Flow Processing Stack\n\nOFPS is a generic optical flow processing library, and OFPS Suite is an accopanying app demonstating its functionality.\n\n![](docs/report/panorama.jpg)\n\n## Running OFPS Suite\n\n1. Install the latest stable Rust toolchain (version 1.60.0) through https://rustup.rs/.\n\n2. Install dependencies (see dedicated subsection).\n\n3. Build default plugins with `cargo build --release`\n\n4. Optionally, build libmv estimator (more involved, see its subsection).\n\n5. Run OFPS suite with `cargo run --release --bin ofps-suite`\n\n### Installing dependencies\n\nUbuntu/Debian:\n\n```\nsudo apt-get install atk1.0 libgtk-3-dev ffmpeg libavutil-dev libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libopencv-dev libclang-dev clang libxcb-shape0-dev libxcb-xfixes0-dev\n```\n\nFedora:\n\n```\nsudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm\nsudo dnf install gtk3-devel clang clang-devel opencv-devel ffmpeg-devel\n```\n\nWindows/macOS:\n\nGood luck :)\n\n### Building libmv estimator\n\nFirst, make sure libmv submodule is initialised:\n\n```\ngit submodule update --init\n```\n\nThen, source the environment at the root of the repo\n\n```\nsource env\n```\n\nThen, install extra dependencies:\n\nUbuntu/Debian:\n\n```\nsudo apt-get install cmake libceres-dev libjpeg-dev\n```\n\nFedora:\n\n```\nsudo dnf install cmake ceres-solver-devel libjpeg-turbo-devel\n```\n\nGo to libmv-rust/libmv directory. Run `make`. Not everything will compile. That is okay - we only need `libmultiview.so` and its dependencies.\n\nGo back to root of the repo, run `cargo build --release --workspace`.\n\n### Troubleshooting\n\nSet log level to see errors better:\n\n```\nexport RUST_LOG=\u003ctrace,debug,info,warn,error\u003e\n```\n\nIf it is a graphics issue, try forcing OpenGL backend:\n\n```\nexport WGPU_BACKEND=gles\n```\n\n## Documentation\n\nAssuming the workspace compiles, following steps 1-3 of OFPS Suite section, run `cargo doc --open`.\n\n## Unit tests\n\nAssuming the workspace compiles, run `cargo test`.\n\n## Example configurations\n\nDownload core samples from [Google Drive](https://drive.google.com/drive/folders/1i4sPhfbvCzV6b0r5iiUEnGVXmX1XkwMq), and extract `samples.zip` (sha256 - c1a27a0716b5633792afca7c1a032dcc9c15c8f7153a03e8d5206e1d86379896) in the project root under `samples` directory. Raw detection sample was large, thus it has been separated into `cctv.h264` file (sha256 - 9fd17d015924538c140f9ee478bdbfc5233f6c948ff134d2f31415e795da9b66). Place it in `samples/detection` directory. Locations are important, because predefined configs reference paths relative to current working directory.\n\n### Detection Configurations\n\nLoad predefined configuration files from the paths given (by clicking on the large detection title button).\n\n- Scenario from Results - `samples/scenario_detect.json` (requires raw sample).\n\n- Basic motion - `samples/basic_detect.json`.\n\n- Live TCP stream (webcam) - `samples/tcp_detect.json`.\n\nFor V4L webcam through TCP, first run the following command in another terminal:\n\n```\nffmpeg -i /dev/video1 -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -x264-params \"\" -f mpegts tcp://0.0.0.0:3333\\?listen\n```\n\nAdjust `/dev/video1` to correct V4L device. The command needs to be re-run after each connection instance.\n\n### Tracking Configurations\n\nLoad predefined configuration files from the paths given (by clicking on the large tracking title button).\n\n- Synthetic videos, all estimators, ground truth comparisons - `samples/synthetic_all_gt.json`.\n\n- Synthetic videos, single estimator, ground truth - `samples/synthetic_almeida_gt.json`.\n\n- Real-world videos - `samples/real_world.json`.\n\n- Real-world videos (cropped, slowmo) - `samples/real_world_crop.json`.\n\n- Live TCP stream (webcam) - `samples/tcp_track.json`.\n\nThe preloaded samples can be replaced with different ones. See `samples/synthetic` and `samples/real_world` directories. Cropped config is needed to account for 1.2x sensor crop applied on slow motion video.\n\nFor TCP configuration, refer to the previous subsection for setup steps. In addition, camera's horizontal and vertical field of view must be set correctly for tracking to be accurate.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh33p%2Fofps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fh33p%2Fofps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh33p%2Fofps/lists"}