-
-
OpenCV 5 finds the flowing water and reads the waterline like a staff gauge
-
Replay of the 2 Oct 2026 flash flood - early warning 85 minutes before the water covered the crossing
-
Forecast trained on 9.5 years of gage data warns before the crossing closes
-
Architecture - OpenCV 5 and an Amazon Nova agent on AWS Lambda (Graviton) with a human in the loop
Inspiration
I wanted to build something physical: a system that looks at a real river, not a dashboard of numbers. Low-water crossings are where people drive into floods, and the USGS already has cameras pointed at many of them that nobody measures.
What it does
RiverWatch reads the water level from a river camera with OpenCV 5, compares it with the official gages, and forecasts whether the crossing will close in the next hour. An Amazon Nova agent decides what to do next: check more often, flag a broken sensor, or ask a human operator to close the crossing. Nothing is published without the operator.
How we built it
Classical OpenCV 5: quality checks, image alignment, and comparing frames 15 minutes apart to find moving water and measure the waterline. A small forecast model trained on 9.5 years of gage data. The agent runs on Amazon Bedrock, and everything runs on AWS: Lambda on Graviton, S3, CloudFront and SNS.
Challenges we ran into
Muddy flood water and dry gravel look almost the same colour, and moving shadows looked like flowing water. The official gage at our test site turned out to be broken. And the model sometimes made unsafe choices, so the safety rules now live in code, not in the prompt.
Accomplishments that we're proud of
Replaying the real flash flood of 2 October 2026, the agent sent an early warning 85 minutes before the water covered the crossing. The camera reads the level within 20 cm on average, and the system is live today.
What we learned
Test an agent like a system: real data, injected failures, repeated runs. And be honest about where it fails.
What's next for RiverWatch
More of the 1,300+ USGS cameras, night-time readings, and rain data in the forecast.
Built With
- amazon-bedrock
- amazon-cloudfront
- amazon-eventbridge
- amazon-nova
- amazon-sns
- amazon-web-services
- aws-graviton
- aws-lambda
- aws-sam
- html5
- javascript
- numpy
- opencv
- python
- scikit-learn
- usgs
Log in or sign up for Devpost to join the conversation.