DEV Community

Cover image for Image threshold with Python
petercour
petercour

Posted on

2 1

Image threshold with Python

You can threshold images with the cv2 method threshold(). What is thresholding? What is cv2?

The module cv2 is the computer vision module for Python. This lets you make computer vision software, which goes far beyond image processing. The technique uses Machine Learning.

Start with an input image. This can be any input image, jpg, png or whatever you want.

Input image:

If pixel value is greater than a threshold value, it is assigned one value (may be white), else it is assigned another value (may be black). The function used is cv2.threshold.

There are different types of thresholding, which the program below demonstrates:

Different types are:

  • cv2.THRESH_BINARY
  • cv2.THRESH_BINARY_INV
  • cv2.THRESH_TRUNC
  • cv2.THRESH_TOZERO
  • cv2.THRESH_TOZERO_INV

OpenCV code

So how does it work in code? Start with an input image (image.jpg). Then use cv2 to show different variations.

#!/usr/bin/python3                                                                                                                                                  

import cv2
import numpy as np
from matplotlib import pyplot as plt

img=cv2.imread('image.jpg')
GrayImage=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh1=cv2.threshold(GrayImage,127,255,cv2.THRESH_BINARY)
ret,thresh2=cv2.threshold(GrayImage,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3=cv2.threshold(GrayImage,127,255,cv2.THRESH_TRUNC)
ret,thresh4=cv2.threshold(GrayImage,127,255,cv2.THRESH_TOZERO)
ret,thresh5=cv2.threshold(GrayImage,127,255,cv2.THRESH_TOZERO_INV)
titles = ['Gray Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [GrayImage, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in xrange(6):
   plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
   plt.title(titles[i])
   plt.xticks([]),plt.yticks([])
plt.show()
Enter fullscreen mode Exit fullscreen mode

Output for this example:

These lines show all the images in one plot:

#/usr/bin/python3

for i in xrange(6):
   plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
   plt.title(titles[i])
   plt.xticks([]),plt.yticks([])
plt.show()
Enter fullscreen mode Exit fullscreen mode

These are the different variations of thresholding. You can set the threshold parameters. The parameters include threshold and maxval.

Related links:

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay