Как получить доступ к лабораторным значениям каждого суперпикселя SLI C? - PullRequest
0 голосов
/ 11 апреля 2020

Итак, у меня есть следующий код, который сегментирует изображение на основе количества суперпикселей:

from skimage.segmentation import slic
from skimage.segmentation import mark_boundaries
from skimage.util import img_as_float
import matplotlib.pyplot as plt
import numpy as np
import cv2


img = cv2.imread("image.png")
lab_img = cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
segments = slic(img_as_float(lab_img),n_segments= 7 ,slic_zero=True,sigma =5)
fig = plt.figure("Superpixels -- %d segments" % (22))
ax = fig.add_subplot(1, 1, 1)
img_copy = img
ax.imshow(mark_boundaries(lab_img, segments))
plt.axis("off")
plt.show()

for (sp,segVal) in enumerate (np.unique(segments)):

    mask = np.zeros(lab_img.shape[:2],dtype = "uint8")
    mask[segments == segVal] = 255
    each_segment = cv2.bitwise_and(lab_img,lab_img,mask=mask)

    cv2.imshow("Mask", mask)
    cv2.imshow("Applied", cv2.bitwise_and(img, img, mask = mask))
    cv2.waitKey(0)

Мой вопрос: как я могу получить для каждого суперпикселя значения его пикселей итеративно? Я пробовал использовать a для l oop, и он отлично справляется со своей задачей, однако он получает значения из всего изображения (имеется в виду множество черных пикселей), что значительно замедляет время вычислений. Есть ли способ получить пиксели только от суперпикселя?

...