Extracting Frames from Canon RAW Burst Files on Linux Using dnglab
Introduction
Canon's newer mirrorless cameras, including the Canon R7, 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)
dnglabinstalled- A
.CR3RAW 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
.DNGfiles retain full RAW sensor data, making them ideal for post-processing. - Canon’s
.CR3format is proprietary, and whilednglabcan extract frames, metadata consistency may vary across software. .DNGfiles 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!




