Создайте маску с помощью PolyLineROI изображения той же формы - PullRequest
0 голосов
/ 30 мая 2020

Я программирую пользовательский интерфейс для создания интерактивной маски из заданного 2D-изображения. Pyqtgraph предлагает множество полезных инструментов для этой цели, но мне очень трудно создать маску той же формы, что и данное изображение, с нулевыми значениями за пределами roi. Для этой цели я использовал функцию getArrayRegion из класса PolyLineRoi, но, как я уже сказал, она предлагает мне только замаскированные данные новой формы, которые зависят от текущего roi, который устанавливается в интерактивном режиме. Я потратил часы на попытки понять исходный код, чтобы манипулировать им в свою пользу, но безуспешно. Мне удалось изменить только форму маски вручную, но начало координат было ложным, а изображение было растянутым. Есть ли способ получить маску / замаскированное изображение того же размера без изменения исходного кода pyqtgraph или мне нужно реализовать свой собственный метод?

Здесь актуальный раздел кода:

rois = pg.PolyLineROI(
            [[320, 20], [400, 20], [480, 160], [520, 20], [560, 20], [510, 170], [600, 320], [520, 320], [480, 180],[400, 320], [320, 320], [450, 170]], closed=True)


def update(roi):
           img1b.setImage(roi.getArrayRegion(arr, img1a), levels=(0, 1))
           pic = roi.getArrayRegion(arr, img1a) # arr is the image
           v1b.autoRange()

rois.sigRegionChanged.connect(update)
v1a.addItem(rois)
self.w.show()
...