Amazing-Python-Scripts

Форк
0
67 строк · 1.6 Кб
1
import cv2
2
from 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
8
print("\nImage should preferably be white (lighter) blobs on black (darker) background ")
9
photo = askopenfilename()
10
img = cv2.imread(photo, cv2.IMREAD_GRAYSCALE)
11
img = cv2.resize(img, (300, 300))
12
n, l = img.shape
13
count = 0
14

15
# blur the image
16
ksize = (5, 5)  # kernel size
17
img = cv2.blur(img, ksize)
18

19
# thresholding the image
20
for i in range(n):
21
    for j in range(l):
22
        if (img[i, j] <= 127):
23
            img[i, j] = 0
24
        else:
25
            img[i, j] = 255
26

27

28
def dfs(i, j):
29
    img[i, j] = 127  # implying that we have visited this pixel for further reference
30
    if (i-1 >= 0):
31
        if (img[i-1, j] == 255):
32
            dfs(i-1, j)
33
    if (j-1 >= 0):
34
        if (img[i, j-1] == 255):
35
            dfs(i, j-1)
36
    if (j+1 < l):
37
        if (img[i, j+1] == 255):
38
            dfs(i, j+1)
39
    if (i+1 < n):
40
        if (img[i+1, j] == 255):
41
            dfs(i+1, j)
42
    if ((i-1 >= 0) and (j-1 >= 0)):
43
        if (img[i-1, j-1] == 255):
44
            dfs(i-1, j-1)
45
    if ((i-1 >= 0) and (j+1 < l)):
46
        if (img[i-1, j+1] == 255):
47
            dfs(i-1, j+1)
48
    if ((i+1 < n) and (j-1 >= 0)):
49
        if (img[i+1, j-1] == 255):
50
            dfs(i+1, j-1)
51
    if ((i+1 < n) and (j+1 < l)):
52
        if (img[i+1, j+1] == 255):
53
            dfs(i+1, j+1)
54

55

56
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
57
cv2.imshow("image", img)
58
cv2.waitKey(1000)
59

60

61
for i in range(n):
62
    for j in range(l):
63
        if (img[i, j] == 255):
64
            count += 1  # to count number of white blobs
65
            dfs(i, j)
66

67
print("count is", count)
68

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.