Я программирую пользовательский интерфейс для создания интерактивной маски из заданного 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()