Это мое входное изображение:
Я хочу извлечь каждый объект изображения в соответствии с маркировкой ConnectedComponents
, но ConnectedComponents
не маркирует каждый объект последовательно.
Итак, когда я извлекаю каждую метку, я получаю такую последовательность:
Есть ли другие способы извлечения меток последовательно с помощью ConnectedComponents
?
Это мой код:
image = cv2.imread("/Users/server/Documents/Data Teks/Ayah/T11_F1_D5.jpg")
plt.subplot(241)
plt.imshow(image, cmap="gray", vmin=0, vmax=255)
plt.xticks([]), plt.yticks([])
plt.title('Image')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
t, thresh = cv2.threshold(gray, 105, 255, cv2.THRESH_BINARY_INV, cv2.THRESH_OTSU)
connectivity = 8
num_labels, label= cv2.connectedComponents(thresh, connectivity)
label = label + 1
thresh = cv2.cvtColor(thresh,cv2.COLOR_GRAY2RGB)
h, w = thresh.shape[:2]
for index in range(1, num_labels):
mask = np.zeros((h, w), np.uint8)
mask[label == index + 1] = 1
obj = thresh * mask[:, :, np.newaxis]
obj = obj[..., : : -1]
plt.subplot(1, 7, index)
plt.imshow(obj)
plt.xticks([]), plt.yticks([])
plt.title(index)
plt.show()