dImgGC = cl.Image(context, cl.mem_flags.READ_ONLY, cl.ImageFormat(cl.channel_order.RGBA, cl.channel_type.UNSIGNED_INT8), dim ) cl.enqueue_copy(queue, dImgGC, hImg, origin=(0,0), region=dim) dImg = Buffer2D(context, cm.READ_WRITE | cm.COPY_HOST_PTR, hostbuf=hImg) dStrokes = Buffer2D(context, cm.READ_WRITE, dim, dtype=np.uint8) growCut = GrowCut(context, devices, dImgGC, GrowCut.NEIGHBOURHOOD.VON_NEUMANN, GrowCut.WEIGHT_POW2) brush = Brush(context, devices, growCut.dLabelsIn) brush.setLabel(TRI_BG) iteration = 0 refresh = 100 def next(): global iteration growCut.evolve(1) sm.processTrimap(dStrokes, growCut.dLabelsOut, growCut.dStrengthIn, 0.95) if growCut.isComplete: window.updateCanvas() timer.stop() # sm.processTrimap(growCut.dLabelsIn, growCut.dLabelsOut, growCut.dStrengthIn, 0.985)