Python 3.x 如何强制OpenCV窗口在Python中重画?

Python 3.x 如何强制OpenCV窗口在Python中重画?,python-3.x,opencv3.0,imshow,redraw,Python 3.x,Opencv3.0,Imshow,Redraw,我将OpenCv3与Python3一起使用。 该程序允许用户用鼠标选择感兴趣的区域 我的ROI窗口会随着感兴趣区域的扩大而重新绘制,但不会随着区域的缩小而重新绘制 以下是函数: def update_roi(): global roi, img, h, w, x, y if h>0 and w>0: roi = img[y:y+h, x:x+w, 0:3] #take a slice from original image cv.ims

我将OpenCv3与Python3一起使用。 该程序允许用户用鼠标选择感兴趣的区域

我的ROI窗口会随着感兴趣区域的扩大而重新绘制,但不会随着区域的缩小而重新绘制

以下是函数:

def update_roi():
    global roi, img, h, w, x, y
    if h>0 and w>0:
        roi = img[y:y+h, x:x+w, 0:3] #take a slice from original image
        cv.imshow("ROI", roi) #show the new region of interest.
当w增大时,ROI窗口按预期重新绘制,图像平滑增长。但当w减小时,令人烦恼的是,上一次绘制的剩余部分仍然显示出来

我尝试用np.array.zeros()用零填充ROI,以消除ROI。这使得ROI闪烁,但在减小宽度时ROI仍然不准确。 正如在其他一些帖子中指出的,我也尝试使用cv.waitkey(50)来给事物一个画画的机会。也没有帮助

我试图通过多次调用cv.imshow来强制重画。。。但并没有解决这个问题

我应该指出,这仅仅是美观,代码仍然将正确缩小的ROI作为图像写入磁盘

但我真的很想知道: 有没有办法使用Python在打开的CV窗口中强制重画? 非常感谢
林赛

我以前有过这个问题。根据您的具体需求,您可能会发现在
imshow()
之前调用
destroyWindow()
destroyAllWindows()
()非常适合您

我以前有过这个问题。根据您的具体需求,您可能会发现在
imshow()
之前调用
destroyWindow()
destroyAllWindows()
()非常适合您

谢谢你的建议。谢谢你的建议。