import cv2
import matplotlib.pyplot as plt
from skimage import io,color,img_as_ubyte,data
from skimage.filters import threshold_otsu
from skimage.measure import label,regionprops
image=data.coins()
#if file is given image=io.imread('your_image.jpg')
if image.ndim==3:
  gray=color.rgb2gray(image)
else:
  gray=image
#preprocessing
gray=cv2.resize(gray,(256,256))
gray=img_as_ubyte(gray)
denoised=cv2.GaussianBlur(gray,(5,5),0)
contrast=cv2.equalizeHist(denoised)
from skimage.morphology import closing,square
#segmentation
thresh=threshold_otsu(contrast)
binary=closing(contrast>thresh,square(3))
labeled=label(binary)
regions=regionprops(labeled)
plt.figure(figsize=(15,5))

plt.imshow(gray,cmap='gray')
plt.title('original')
plt.axis('off')
plt.show()

plt.imshow(contrast,cmap='gray')
plt.title('preprocessed')
plt.axis('off')
plt.show()

plt.imshow(binary,cmap='gray')
plt.title('segmented')
plt.axis('off')
plt.show()

plt.imshow(labeled,cmap='gray')
plt.title('Detected')
plt.axis('off')
plt.show()
