Текстура карты от изображения до 2D формы Python - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблемы с поиском решения этой проблемы, которое я понимаю. У меня есть код, который генерирует случайные белые фигуры на холсте, используя opencv, у меня также есть соответствующие маски. Например: Rectangle

Моя цель - наложить текстуру с изображения, подобного следующему: Water

поверх только белое пятно.

Как уже упоминалось, я использую opencv для генерации фигур, но я предполагаю, что мне нужно использовать PyOpenGL для фактического создания / наложения текстур, но я не могу найти ресурсы с тем же вариантом использования.

У меня есть следующий код:

# Create blank canvas
mask = np.zeros((100, 100, 3), np.uint8)

# Generate random corners for rectangle
tl_x = random.randint(0, 100-10)
tl_y = random.randint(0, 100-10)
tr_x = random.randint(tl_x+1, 100)
tr_y = random.randint(tl_y+1, 100)

# Add white rectangle to canvas
cv.rectangle(mask, (tl_x, tl_y), (tr_x, tr_y), [255,255,255], -1)

# Load in texture image
tex_image = cv.imread("data/Textures/water.jpg")

# Generate texture
texture_id = gl.glGenTextures(1)
gl.glBindTexture(gl.GL_TEXTURE_2D, texture_id)
gl.glColor3f(1, 1, 1)

# Texture parameters
gl.glTexEnvf(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE)
gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_WRAP_S, gl.GL_REPEAT)
gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_WRAP_T, gl.GL_REPEAT)
gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR)
gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR)

# Add texture to canvas
gl.glTexImage2D(gl.GL_TEXTURE_2D, 0, gl.GL_RGB, 100, 100, 0, gl.GL_LUMINANCE, gl.GL_UNSIGNED_BYTE, mask)

plt.imshow(mask)
plt.show(100)

Я не уверен, нахожусь ли я на правильном пути, и помощь будет очень признательна. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...