Skip to content

DIPlib 3.0

Introduction

Since 2020 a new implementation of DIPlib is available with version 3.0. Below is a small instruction on how to install DIPlib in Windows 10 and how to use the Python binding. All documentation about DIPlib and the API can be found on this site:

Install

For this installation we will use Python version 3.7 and not use Matlab.

DIPlib

Install DIPlib by downloading the beta-release from here:

Execute the installer and accept the default settings.

Visual C++ Redistributable for Visual Studio 2019

To use DIPlib you will need to install Visual C++ Redistributable for Visual Studio 2019. Download from here:

Execute the installer and accept the default settings.

Python (with Miniconda)

To setup Miniconda follow the instructions in Miniconda.

Then open the Anaconda Powershell Prompt (miniconda) and enter the following commands:

# for diplib 3.0 beta you need python 3.7, matplotlib,
#   jupyter and opencv (cv2)
> conda create -n diplib python=3.7 matplotlib jupyter libopencv opencv py-opencv
> conda activate diplib
# tell python were to find the diplib python package PyDIP
> $env:pythonpath = 'C:\Program Files\DIPlib 3\lib\'

Example using DIPlib in Python

Below is an example on how to use DIPlib in Python. This example uses the example in OpenCV in Python to read in a movie (e.g. from your smartphone) and convert this to a smaller movie with only gray-values. Afterwards the result is converted to a dipImage object and stored and read with the dip.Image-write and -read functions.

import PyDIP as dip
import PyDIP.PyDIPviewer as dv

import cv2
import numpy as np

cap = cv2.VideoCapture('IMG_5915.MOV')
if (cap.isOpened()== False):
    print("Error opening video stream or file")

minSize = 512

width  = cap.get(cv2.CAP_PROP_FRAME_WIDTH)   # float
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # float
scale = minSize / min(width, height)
scaleWidth = int(scale * width)
scaleHeight = int(scale * height)
dim = (scaleWidth, scaleHeight)

rawMovie = []
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        small = cv2.resize(frame, dim)
        gray = cv2.cvtColor(small, cv2.COLOR_BGR2GRAY)
        rawMove.append(gray)
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()

dipMovie = dip.Image(np.array(rawMovie))

dip.ImageWriteICS(dipMovie, 'IMG_5915.ics')

dipMovie = dip.ImageReadICS('IMG_5915.ics')

Happy DIPing!