Image metadata (EXIF)¶
Every image the OWL records carries metadata describing how and where it was taken. This matters because recorded images are usually destined for a dataset: without the settings that produced a detection, a frame is a picture rather than a measurement.
Metadata is written to every saved image, including the cropped images
produced by the bbox and square sample methods.
What is recorded¶
Time. DateTimeOriginal, DateTimeDigitized and DateTime, plus
sub-second precision and the UTC offset. The timestamp is taken at the moment
the frame is captured, not when the file is written. This is the field most
photo tools show as “Date taken”.
Camera. Sensor make and model, exposure time, ISO equivalent (from analogue and digital gain) and focus distance where the lens reports it. The complete raw camera metadata is also stored verbatim, so nothing is lost.
Detection settings. The algorithm and the thresholds it ran with: excess green bounds, hue, saturation and brightness ranges, minimum weed size, sensitivity level, painted profile, and model confidence for in-crop detection. These are what make a frame reproducible.
Position. Latitude, longitude, altitude, speed, heading, satellite count and accuracy, plus the satellite date and time, whenever a fix is available.
Session. The recording session identifier and start time, so a file remains traceable after it has been copied out of its folder, together with any field name, crop, weather and vehicle entered on the dashboard before recording.
Region. For cropped images, the source frame dimensions and the position and
size of the crop within it, recorded as source_width/source_height and
roi_x/roi_y/roi_width/roi_height. Note that the session field named
crop is the crop you are growing; the image region uses the roi_ prefix.
Missing values are omitted, never invented¶
If the OWL has no satellite fix, no position tags are written at all. If the camera does not report exposure, no exposure tag is written. A field is never filled with a zero or an empty string to keep the structure tidy, because an invented coordinate or exposure silently corrupts a dataset.
The same applies to size limits. The free-text fields are capped so that the
structured tags always fit; if a field would overflow, the least important keys
are dropped and a metadata_truncated marker is added, rather than discarding
the whole field.
Set the timezone¶
Date tags are written in local time with the offset recorded alongside. If the unit’s timezone has never been set it will be UTC, and photo tools that ignore the offset will show times shifted by however far you are from Greenwich.
sudo timedatectl set-timezone Pacific/Auckland
The phone app sets the timezone for you when it syncs the clock.
Raspberry Pi boards have no battery-backed clock. A unit that has never reached a time server or a phone will have an inaccurate clock, and the date tag will reflect that. When a satellite fix is present the satellite date and time are recorded separately and remain correct regardless, so they are the reliable cross-check.
Checking an image¶
exiftool -DateTimeOriginal -OffsetTimeOriginal -GPSDateStamp \
-GPSLatitude -GPSLongitude -ImageDescription image.jpg
On Windows, right-click the file, choose Properties, then Details, and look for “Date taken”.