# \[ANN\] PawsomeTracker.jl

**URL:** <https://discourse.julialang.org/t/ann-pawsometracker-jl/127929>\
**Category:** Package Announcements\
**Tags:** package, video, object-detection\
**Created:** [April 10, 2025, 12:47pm UTC](https://discourse.julialang.org/t/ann-pawsometracker-jl/127929 "2025-04-10T12:47:44Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [April 10, 2025, 12:47pm UTC](https://discourse.julialang.org/t/ann-pawsometracker-jl/127929/1 "2025-04-10T12:47:44Z")

</div>

I’m glad to share [PawsomeTracker.jl](https://github.com/yakir12/PawsomeTracker.jl), a simple, robust, and performant tracker used to track targets in video files. It uses a [Difference of Gaussian (DoG)](https://en.wikipedia.org/wiki/Difference_of_Gaussians) filter to detect the target in the frame.

It works with concurrency, videos that have a non-zero start-time, pixel aspect ratios (i.e. SAR, DAR, etc) other than one, and can process multiple consecutive videos (e.g. segmented video files). It returns a vector with the time-stamps per frame and a vector of Cartesian indices for the detection index per frame. It has a few useful settings with sensible defaults:

- start time
- stop time
- target width
- start location
- search window size
- brighter/darker than the background
- frames per second
- should a diagnostic video be saved

We’ve been using this tool extensively in our lab and it works very well, but feel free to suggest improvements, fixes, or anything really!

---

<div class="post-metadata">

**Author:** ![alejandromerchan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alejandromerchan/32/10500_2.png) [@alejandromerchan](https://discourse.julialang.org/u/alejandromerchan)\
**Post date:** [April 10, 2025, 4:42pm UTC](https://discourse.julialang.org/t/ann-pawsometracker-jl/127929/2 "2025-04-10T16:42:47Z")

</div>

Looks like an awesome package. But I also just want to show appreciation to the fact that the Julia forum now has a video of dung beetles. Seeing the mix between Julia and entomology is exciting for me.

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [April 14, 2025, 7:03am UTC](https://discourse.julialang.org/t/ann-pawsometracker-jl/127929/3 "2025-04-14T07:03:51Z")

</div>

Nicely spotted..! Indeed, it’s _Kheper lamarcki_.

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [April 14, 2025, 11:46am UTC](https://discourse.julialang.org/t/ann-pawsometracker-jl/127929/4 "2025-04-14T11:46:21Z")

</div>

You’d be happy to learn that this has existed for 6 years already 😅

> [@Smoothing tracks with a Kalman filter](https://discourse.julialang.org/t/smoothing-tracks-with-a-kalman-filter/24209/21):
>
> Of course! Go to [GitHub - yakir12/CoffeeBeetles.jl: Code base for "A dung beetle that homes without the use of landmarks"](https://github.com/yakir12/CoffeeBeetles.jl) (install but you don’t need to run main()), and then if you run: data = CoffeeBeetles.deserialize(CoffeeBeetles.datafile) df = CoffeeBeetles.getdf(data) that df is a data frame with tons of tracks. To access the raw coordinates of a track in the first row of that data frame, you can do this: t = df.track[1] t.rawcoords The smoothed ones (again via a smoothing spline) are…
