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()
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()
These are the different variations of thresholding. You can set the threshold parameters. The parameters include threshold and maxval.
Related links:
Top comments (0)