Я пытаюсь обновить три сюжета на моем участке. Я думаю, проблема в том, что старое изображение не очищается, поэтому новое изображение наносится поверх старого ... но я не совсем уверен ... может быть, есть и другая проблема. Но возможно создать новое изображение с помощью cv2.imshow () ... проблема в том, что мне нужно нанести несколько изображений на участок. Как я могу это исправить?
В зависимости от положения ползунка маска меняется.
Большое спасибо!
img.fig2, img.ax2 = plt.subplots()
for i in range(3):
plt.subplot(2, 3, i + 1)
plt.imshow(img[i])
plt.xticks([])
plt.yticks([])
def update (val):
...........
for i in range(3):
res[i] = cv2.cvtColor(res[i], cv2.COLOR_HSV2RGB)
fig2 = plt.figure(2)
fig2.add_subplot(2, 3, 4 + i)
plt.imshow(res[i])
plt.xticks([])
plt.yticks([])
plt.draw()
plt.show()
весь интересующий код:
fig2, ax2 = plt.subplots()
for i in range(3):
plt.subplot(2, 3, i + 1)
plt.imshow(img[i])
plt.xticks([])
plt.yticks([])
plt.pause(0.1)
def update(val):
hsv1 = cv2.cvtColor(img1, cv2.COLOR_BGR2HSV)
hsv2 = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)
hsv3 = cv2.cvtColor(img3, cv2.COLOR_BGR2HSV)
l_b = np.array([shl.val, ssl.val, svl.val])
u_b = np.array([shu.val, ssu.val, svu.val])
mask1 = cv2.inRange(hsv1, l_b, u_b)
mask2 = cv2.inRange(hsv2, l_b, u_b)
mask3 = cv2.inRange(hsv3, l_b, u_b)
res1 = cv2.bitwise_and(img1, img1, mask=mask1)
res2 = cv2.bitwise_and(img2, img2, mask=mask2)
res3 = cv2.bitwise_and(img3, img3, mask=mask3)
res = [res1, res2, res3]
plt.clf()
for i in range(3):
res[i] = cv2.cvtColor(res[i], cv2.COLOR_HSV2RGB)
fig2 = plt.figure(2)
fig2.add_subplot(2, 3, 4 + i)
plt.imshow(res[i])
plt.xticks([])
plt.yticks([])
fig2.canvas.draw_idle()
plt.pause(0.01)
plt.draw_all()
shl.on_changed(update)
ssl.on_changed(update)
svl.on_changed(update)
shu.on_changed(update)
ssu.on_changed(update)
svu.on_changed(update)
plt.show()