jezvgg hai 1 ano
pai
achega
8a9ea80ce0

BIN=BIN
pencils/images/img (1).jpg


BIN=BIN
pencils/images/img (10).jpg


BIN=BIN
pencils/images/img (11).jpg


BIN=BIN
pencils/images/img (12).jpg


BIN=BIN
pencils/images/img (2).jpg


BIN=BIN
pencils/images/img (3).jpg


BIN=BIN
pencils/images/img (4).jpg


BIN=BIN
pencils/images/img (5).jpg


BIN=BIN
pencils/images/img (6).jpg


BIN=BIN
pencils/images/img (7).jpg


BIN=BIN
pencils/images/img (8).jpg


BIN=BIN
pencils/images/img (9).jpg


+ 45 - 0
pencils/main.py

@@ -0,0 +1,45 @@
+from skimage.filters import threshold_otsu
+from skimage.measure import label, regionprops
+from skimage.morphology import binary_closing, binary_dilation, binary_erosion, binary_opening
+import matplotlib.pyplot as plt
+import pathlib
+
+
+def binary_append(image, func, times: int = 1):
+    result = image[:]
+    for _ in range(times):
+        result = func(result)
+    return result
+
+all_pencils = 0
+
+for index in range(1, 12):
+    image = plt.imread(f'pencils/images/img ({index}).jpg').mean(axis=2)
+
+    thrashold = threshold_otsu(image)
+
+    image[image < thrashold] = 1
+    image[image > thrashold] = 0
+
+    # Большой closing
+    result = binary_append(image, binary_dilation, 25)
+    result = binary_append(result, binary_erosion, 25)
+
+    pen_count = 0
+    labeled = label(result)
+    regions = regionprops(labeled)
+    for region in regions:
+        min_row, min_col, max_row, max_col = region.bbox
+        width = max_col - min_col
+        height = max_row - min_row
+        if (width / result.shape[1] > 0.4 or height / result.shape[0] > 0.4) and \
+        not (max_row == result.shape[0] or max_col == result.shape[1]):
+            pen_count += 1
+
+    plt.subplot(3,4,index)
+    plt.title(f'{pen_count} карандашей')
+    plt.imshow(labeled)
+    
+    all_pencils += pen_count
+
+plt.show()