Отдельные перекрывающиеся объекты в semanti c сегментированных изображениях - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь поместить ограничивающий прямоугольник во время вывода в semanti c сегментированных изображениях. Но у меня возникает проблема с перекрывающимися объектами, и сегментация c semanti распознает их только как один объект. Есть ли какой-то конкретный метод для разделения и помещения в разные ограничивающие рамки?

Я должен использовать для этого сегментацию экземпляра, и это будет легко, но я хочу попробовать с сегментацией semanti c.

enter image description here

    def bbox_output(self, predict):
    #cv2.imshow('frame', predict)
    person_mask = np.zeros(predict.shape, dtype=np.uint8)
    person_mask[np.all(predict == self.person_color, axis=-1)] = [255, 255, 255]

    person_mask = cv2.cvtColor(person_mask, cv2.COLOR_BGR2GRAY)
    #cv2.imshow('test', person_mask)
    #cv2.imwrite('masking.png', person_mask)        
    #cv2.waitKey(100000)
    #cv2.destroyAllWindows()

    distance = ndi.distance_transform_edt(person_mask)

    #cv2.imshow('distance', distance)
    #cv2.waitKey(100000)
    #cv2.destroyAllWindows()

    person_mask = label(person_mask)


    regions = regionprops(person_mask)

    props = regionprops_table(person_mask, properties=('centroid','orientation','bbox','major_axis_length','minor_axis_length','area'))
    print(pd.DataFrame(props))

    bboxes = []
    num_people = [0]
    i = 1

    for props in regions:
        if props.area > 100:
            minr, minc, maxr, maxc = props.bbox
            bboxes += [props.bbox]
            num_people += [i]
            predict = cv2.rectangle(predict, (minc, minr), (maxc, maxr), (0, 255, 0), 2, cv2.LINE_AA)
            predict = cv2.putText(predict, f'person{i}', (minc, minr-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2, cv2.LINE_AA)
            i +=1 

    return predict, bboxes, num_people[-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...