Я использую лыжный маг. Мне нужно создать маску, равную по площади изображению. Маска будет иметь область, которая будет скрывать часть изображения. Я строю это, как в примере ниже, но это очень медленно, и я уверен, что есть питонский способ сделать это. Может ли кто-нибудь выделить это, пожалуйста?
Код использую сейчас:
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import skimage as sk
sourceimage = './sample.jpg'
img = np.copy(io.imread(sourceimage, as_gray=True))
mask = np.full(img.shape, 1)
maskpolygon = [(1,200),(300,644),(625,490),(625,1)]
from shapely.geometry import Point
from shapely.geometry.polygon import Polygon
pgon = Polygon(maskpolygon)
for r in range(mask.shape[0]):
for c in range(mask.shape[1]):
p = Point(r,c)
if pgon.contains(p):
mask[r,c] = 0
Ожидаемый результат похож (для изображения 9x9 - но я работаю на 700x700)
[1,1,1,1,1,1,1,1,1]
[1,1,1,1,1,1,1,1,1]
[1,1,0,0,1,1,1,1,1]
[1,1,0,0,1,1,1,1,1]
[1,1,0,0,0,0,1,1,1]
[1,1,0,0,0,0,0,1,1]
[1,1,1,0,0,0,0,1,1]
[1,1,1,1,0,0,1,1,1]
[1,1,1,1,1,1,1,1,1]
Я могу инвертировать 1и 0, чтобы показать / скрыть регион.
Спасибо.