import cv2
import numpy as np
from skimage.feature import canny
from skimage.measure import label, regionprops
import matplotlib.pyplot as plt
images=[np.random.rand(100,100) for _ in range(100)]
preprocessed_images=[cv2.GaussianBlur(img,(5,5),0) for img in images]
edges=[canny(img) for img in preprocessed_images]
features=[regionprops(label(edge)) for edge in edges]
fig,ax=plt.subplots(1,3,figsize=(12,4))
ax[0].imshow(images[0],cmap='gray')
ax[0].set_title('Original Image')
ax[1].imshow(edges[0],cmap='gray')
ax[1].set_title('Edge Detection')
ax[2].imshow(images[0],cmap='gray')

for region in features[0]:
    minr,minc,maxr,maxc=region.bbox
    rect=plt.Rectangle((minc,minr),maxc-minc,maxr-minr,edgecolor='red',facecolor='none')
    ax[2].add_patch(rect)
ax[2].set_title('Feature Detection')
plt.tight_layout()
plt.show()
