Extracting Frames from Canon RAW Burst Files on Linux Using dnglab
Introduction
Canon's newer mirrorless cameras, including the Canon R17, support a feature called RAW Burst Mode. This feature allows photographers to capture a rapid sequence of RAW frames, encapsulated within a .CR3 container. While Canon’s proprietary software can extract individual frames, Linux users need an alternative open-source solution.
This post explores how to extract individual frames from RAW Burst files using dnglab
, a command-line utility designed to process Canon’s .CR3
format.
Why Extract RAW Burst Frames?
RAW Burst Mode can be useful in scenarios where you need:
- High-speed action shots, capturing multiple RAW frames in quick succession.
- Frame selection post-shooting, allowing you to pick the sharpest or most optimal frame.
- Enhanced post-processing control, compared to relying on Canon’s built-in tools.
However, since Canon embeds all burst frames into a single .CR3
file, Linux users must extract them manually.
Prerequisites
Before proceeding, ensure you have:
- A Linux system (Debian-based, Arch, Fedora, or any modern distribution)
dnglab
installed- A
.CR3
RAW Burst file from your Canon R17 - Basic familiarity with the command line
Installing dnglab on Linux
dnglab
is an open-source utility designed to handle Canon’s .CR3
files. While it isn’t packaged in major distributions yet, you can download the latest release from GitHub:
Steps:
# Download the latest release
wget https://github.com/dnglab/dnglab/releases/latest/download/dnglab-linux-x86_64.tar.gz
# Extract the binary
tar -xvzf dnglab-linux-x86_64.tar.gz
# Move it to a directory in your PATH
sudo mv dnglab /usr/local/bin/
# Ensure the binary is executable
chmod +x /usr/local/bin/dnglab
Now, you should be able to run dnglab
from any terminal.
Extracting Frames from a RAW Burst File
Once dnglab
is installed, navigate to the directory containing your .CR3
file and extract its frames:
mkdir extracted_frames
dnglab convert --image-index all your_raw_burst_file.CR3 extracted_frames/
This command will extract all frames and save them as .DNG
(Adobe Digital Negative) files inside extracted_frames/
.
Extracting a Specific Frame
If you only need a particular frame, specify its index:
dnglab convert --image-index 5 your_raw_burst_file.CR3 extracted_frames/
This extracts only the 5th frame from the burst.
Verifying the Extracted Frames
Once extraction is complete, verify the .DNG
files:
ls -lh extracted_frames/
You can open the .DNG
files using Darktable, RawTherapee, or exiftool
for metadata inspection:
exiftool extracted_frames/frame_0001.dng
Automating the Process with a Bash Script
For users dealing with multiple .CR3
files, the following script automates extraction:
#!/bin/bash
# Directory for extracted frames
mkdir -p extracted_frames
# Find and process all .CR3 files simultaneously
find . -type f -name "*.CR3" | while read -r file; do
echo "Extracting frames from $file..."
dnglab convert --image-index all "$file" extracted_frames/
done
echo "Extraction complete!"
Save this as extract_raw_burst.sh
, make it executable, and run it:
chmod +x extract_raw_burst.sh
./extract_raw_burst.sh
Additional Considerations
- The extracted
.DNG
files retain full RAW sensor data, making them ideal for post-processing. - Canon’s
.CR3
format is proprietary, and whilednglab
can extract frames, metadata consistency may vary across software. .DNG
files might display identical embedded thumbnails—relying on software like RawTherapee or Darktable ensures correct RAW rendering.
Conclusion
By leveraging dnglab
, Linux users can extract individual frames from Canon’s RAW Burst .CR3
files efficiently. This workflow empowers open-source enthusiasts, self-hosters, and home lab users who prefer Linux-based photo processing over proprietary Windows/macOS applications.
For those passionate about open-source imaging tools, contributing to projects like dnglab
or exploring alternative .CR3
parsing libraries can further improve Linux support for Canon’s RAW formats. Happy hacking!