Merge branch 'main' of https://gitarero.ecam.fr/dorian.veloso/GrpC_Identikit
This commit is contained in:
commit
9b2771b1e3
|
|
@ -0,0 +1,65 @@
|
||||||
|
import numpy as np
|
||||||
|
import cv2 as cv
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
|
||||||
|
imagepath = "E:\\ECAM\\2022-23\\Pathway Discovery Workshops\\images-20230626\\ecam.png"
|
||||||
|
|
||||||
|
# Load Image
|
||||||
|
im = cv.imread(imagepath)
|
||||||
|
if im is None:
|
||||||
|
print("Error: Image not found at", imagepath)
|
||||||
|
exit()
|
||||||
|
|
||||||
|
# Get Dimensions
|
||||||
|
dimensions = im.shape
|
||||||
|
height, width, channels = dimensions
|
||||||
|
print('Image Dimension :', dimensions)
|
||||||
|
print('Image Height :', height)
|
||||||
|
print('Image Width :', width)
|
||||||
|
print('Number of Channels :', channels)
|
||||||
|
|
||||||
|
# Resize Image
|
||||||
|
rwidth, rheight = 700, 700
|
||||||
|
rdim = (rwidth, rheight)
|
||||||
|
Resized_Image = cv.resize(im, rdim, interpolation=cv.INTER_AREA)
|
||||||
|
cv.imshow("Resized Image", Resized_Image)
|
||||||
|
cv.waitKey(0)
|
||||||
|
cv.destroyAllWindows()
|
||||||
|
|
||||||
|
# Convert to Grayscale
|
||||||
|
Gray_Img = cv.cvtColor(Resized_Image, cv.COLOR_BGR2GRAY)
|
||||||
|
cv.imshow("Grayscale Image", Gray_Img)
|
||||||
|
cv.waitKey(0)
|
||||||
|
cv.destroyAllWindows()
|
||||||
|
|
||||||
|
# Threshold Image
|
||||||
|
ret, Thresh_Img = cv.threshold(Gray_Img, 100, 255, 0)
|
||||||
|
cv.imshow("Threshold Image", Thresh_Img)
|
||||||
|
cv.waitKey(0)
|
||||||
|
cv.destroyAllWindows()
|
||||||
|
|
||||||
|
# Plot Histogram
|
||||||
|
hist = cv.calcHist([Gray_Img], [0], None, [256], [0, 256])
|
||||||
|
plt.figure()
|
||||||
|
plt.title("Grayscale Histogram")
|
||||||
|
plt.xlabel("Bins")
|
||||||
|
plt.ylabel("# of Pixels")
|
||||||
|
plt.plot(hist)
|
||||||
|
plt.xlim([0, 256])
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
# Find and Draw Contours on Resized Image
|
||||||
|
contours, hierarchy = cv.findContours(Thresh_Img, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
|
||||||
|
contoured_image = Resized_Image.copy()
|
||||||
|
cv.drawContours(contoured_image, contours, -1, (0, 255, 0), 3)
|
||||||
|
cv.imshow("Contours on Resized Image", contoured_image)
|
||||||
|
cv.waitKey(0)
|
||||||
|
cv.destroyAllWindows()
|
||||||
|
|
||||||
|
# Draw Contours on Threshold Image
|
||||||
|
contoured_thresh = cv.cvtColor(Thresh_Img, cv.COLOR_GRAY2BGR)
|
||||||
|
cv.drawContours(contoured_thresh, contours, -1, (0, 255, 0), 3)
|
||||||
|
cv.imshow("Contours on Threshold Image", contoured_thresh)
|
||||||
|
cv.waitKey(0)
|
||||||
|
cv.destroyAllWindows()
|
||||||
|
|
||||||
Loading…
Reference in New Issue