Amazing-Python-Scripts
67 строк · 1.6 Кб
1import cv22from tkinter.filedialog import *3
4
5# we will find number of blobs with pixel value 255 in the following image
6
7# finding binary image
8print("\nImage should preferably be white (lighter) blobs on black (darker) background ")9photo = askopenfilename()10img = cv2.imread(photo, cv2.IMREAD_GRAYSCALE)11img = cv2.resize(img, (300, 300))12n, l = img.shape13count = 014
15# blur the image
16ksize = (5, 5) # kernel size17img = cv2.blur(img, ksize)18
19# thresholding the image
20for i in range(n):21for j in range(l):22if (img[i, j] <= 127):23img[i, j] = 024else:25img[i, j] = 25526
27
28def dfs(i, j):29img[i, j] = 127 # implying that we have visited this pixel for further reference30if (i-1 >= 0):31if (img[i-1, j] == 255):32dfs(i-1, j)33if (j-1 >= 0):34if (img[i, j-1] == 255):35dfs(i, j-1)36if (j+1 < l):37if (img[i, j+1] == 255):38dfs(i, j+1)39if (i+1 < n):40if (img[i+1, j] == 255):41dfs(i+1, j)42if ((i-1 >= 0) and (j-1 >= 0)):43if (img[i-1, j-1] == 255):44dfs(i-1, j-1)45if ((i-1 >= 0) and (j+1 < l)):46if (img[i-1, j+1] == 255):47dfs(i-1, j+1)48if ((i+1 < n) and (j-1 >= 0)):49if (img[i+1, j-1] == 255):50dfs(i+1, j-1)51if ((i+1 < n) and (j+1 < l)):52if (img[i+1, j+1] == 255):53dfs(i+1, j+1)54
55
56cv2.namedWindow('image', cv2.WINDOW_NORMAL)57cv2.imshow("image", img)58cv2.waitKey(1000)59
60
61for i in range(n):62for j in range(l):63if (img[i, j] == 255):64count += 1 # to count number of white blobs65dfs(i, j)66
67print("count is", count)68