Read, modify and write DICOM files with python code
Alternatives To Pydicom
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Pydicom1,6313472509 days ago27March 29, 202254otherPython
Read, modify and write DICOM files with python code
Highdicom121324 days ago36November 09, 202223mitPython
High-level DICOM abstractions for the Python programming language
Dicomweb Client92
3 months ago8mitPython
Python client for DICOMweb RESTful services
a month ago54December 02, 2021gpl-3.0Python
Various utilities created to help with the interpretation of DICOM images and DICOM RT Structures to NumPy masks and Simple-ITK handles/Nifti images. Some necessary steps for deep learning
9 days agogpl-3.0Python
Lightweight portable Dicom browser application
Embedded Pydicom React Viewer16
2 years agoother
Medical DICOM file P10 Viewer/Chrome Extension + 🐍 Python 🐍 Code In Browser (-Pyodide-> WebAssembly) + Pydicom parser + TypeScript React App (CRA) + Python FastAPI Server Deployment
a year agogpl-2.0C++
Viewer for hyperspectral Numpy cubes and (2d/3d/4d)-tensors. (GPLv2)
Pylibjpeg Openjpeg8104 months ago6February 03, 20225otherPython
A J2K and JP2 plugin for pylibjpeg
3 years agolgpl-3.0Python
Represent medical images as numpy array. Supported: .mhd (R/W),.xdr (R/W), dicom (R). Pure Python.
5 years agolgpl-3.0JavaScript
TUTORIAL -> Django bootstrap 4 DICOM online viewer using python background
Alternatives To Pydicom
Select To Compare

Alternative Project Comparisons

unit-tests type-hints doc-build test-coverage Python version PyPI version DOI


pydicom is a pure Python package for working with DICOM files. It lets you read, modify and write DICOM data in an easy "pythonic" way. As a pure Python package, pydicom can run anywhere Python runs without any other requirements, although if you're working with Pixel Data then we recommend you also install NumPy.

Note that pydicom is a general-purpose DICOM framework concerned with reading and writing DICOM datasets. In order to keep the project manageable, it does not handle the specifics of individual SOP classes or other aspects of DICOM. Other libraries both inside and outside the pydicom organization are based on pydicom and provide support for other aspects of DICOM, and for more specific applications.

Examples are pynetdicom, which is a Python library for DICOM networking, and deid, which supports the anonymization of DICOM files.


Using pip:

pip install pydicom

Using conda:

conda install -c conda-forge pydicom

For more information, including installation instructions for the development version, see the installation guide.


The pydicom user guide, tutorials, examples and API reference documentation is available for both the current release and the development version on GitHub Pages.

Pixel Data

Compressed and uncompressed Pixel Data is always available to be read, changed and written as bytes:

>>> from pydicom import dcmread
>>> from import get_testdata_file
>>> path = get_testdata_file("CT_small.dcm")
>>> ds = dcmread(path)
>>> type(ds.PixelData)
<class 'bytes'>
>>> len(ds.PixelData)
>>> ds.PixelData[:2]

If NumPy is installed, Pixel Data can be converted to an ndarray using the Dataset.pixel_array property:

>>> arr = ds.pixel_array
>>> arr.shape
(128, 128)
>>> arr
array([[175, 180, 166, ..., 203, 207, 216],
       [186, 183, 157, ..., 181, 190, 239],
       [184, 180, 171, ..., 152, 164, 235],
       [906, 910, 923, ..., 922, 929, 927],
       [914, 954, 938, ..., 942, 925, 905],
       [959, 955, 916, ..., 911, 904, 909]], dtype=int16)

Compressed Pixel Data


Converting JPEG compressed Pixel Data to an ndarray requires installing one or more additional Python libraries. For information on which libraries are required, see the pixel data handler documentation.

Compressing data into one of the JPEG formats is not currently supported.


Encoding and decoding RLE Pixel Data only requires NumPy, however it can be quite slow. You may want to consider installing one or more additional Python libraries to speed up the process.


More examples are available in the documentation.

Change a patient's ID

from pydicom import dcmread

ds = dcmread("/path/to/file.dcm")
# Edit the (0010,0020) 'Patient ID' element
ds.PatientID = "12345678"

Display the Pixel Data

With NumPy and matplotlib

import matplotlib.pyplot as plt
from pydicom import dcmread
from import get_testdata_file

# The path to a pydicom test dataset
path = get_testdata_file("CT_small.dcm")
ds = dcmread(path)
# `arr` is a numpy.ndarray
arr = ds.pixel_array

plt.imshow(arr, cmap="gray")


We are all volunteers working on pydicom in our free time. As our resources are limited, we very much value your contributions, be it bug fixes, new core features, or documentation improvements. For more information, please read our contribution guide.

If you have examples or extensions of pydicom that don't belong with the core software, but that you deem useful to others, you can add them to our contribution repository: contrib-pydicom.

Popular Dicom Projects
Popular Numpy Projects
Popular Media Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.