У меня проблемы с поиском решения этой проблемы, которое я понимаю. У меня есть код, который генерирует случайные белые фигуры на холсте, используя opencv, у меня также есть соответствующие маски. Например:
Моя цель - наложить текстуру с изображения, подобного следующему:
поверх только белое пятно.
Как уже упоминалось, я использую 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)
Я не уверен, нахожусь ли я на правильном пути, и помощь будет очень признательна. Спасибо!