Demons_皮 2022-01-14 11:20 采纳率: 50%
浏览 294

Python cv2 图片中鼠标画框如何在下次画框时自动删除上一次框

问题遇到的现象和发生背景

使用cv2库来在图片上画框,如何在下一次画框时,自动删除上一次的框

问题相关代码,请勿粘贴截图
import cv2

global img
global point1, point2
global g_rect
drawing = False  # 鼠标按下为真
ix, iy = -1, -1
px, py = -1, -1


def draw_circle(event, x, y, flags, param):
    global ix, iy, drawing, px, py, img, point1, point2
    img2 = img.copy()
    if event == cv2.EVENT_LBUTTONDOWN:  # 左键点击,则在原图打点
        drawing = True
        ix, iy = x, y
        xy = "%d,%d" % (x, y)
        point1 = (ix, iy)
        cv2.circle(img2, point1, 2, (0, 255, 0), thickness=0)
        cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.5, (0, 255, 0), thickness=1)
        cv2.imshow('image', img2)

    elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):  # 按住左键拖曳,画框
        if drawing == True:
            cv2.rectangle(img2, point1, (x, y), (0, 255, 0), thickness=0)
            cv2.imshow('image', img2)
            cv2.waitKey(16)

    elif event == cv2.EVENT_LBUTTONUP:  # 左键释放,显示
        drawing = False
        point2 = (x, y)
        xy = "%d,%d" % (x, y)
        cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), thickness=0)
        cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.5, (0, 255, 0), thickness=1)
        cv2.imshow('image', img2)
        px, py = -1, -1


def get_coordinate_by_frame(img_path):
    global img
    img = cv2.imread(img_path)  # 图片路径
    cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
    cv2.setMouseCallback('image', draw_circle)
    while True:
        cv2.imshow('image', img)
        cv2.waitKey(1)
        # 点击窗口X按钮关闭窗口
        if cv2.getWindowProperty('image', cv2.WND_PROP_VISIBLE) < 1:
            break


if __name__ == '__main__':
    pass
    img_path = "E:\import\\1.png"
    get_coordinate_by_frame(img_path)


运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

下次画框时,上次的框自动删除

  • 写回答

1条回答 默认 最新

  • Dana_ranmo 2022-01-14 13:08
    关注

    建议每次画框都在原图的基础上拷贝一份,在拷贝上画框,这样就不会一直在一个地方画框

    评论

报告相同问题?

问题事件

  • 创建了问题 1月14日

悬赏问题

  • ¥15 思科模拟器Router c3600 NM-4E
  • ¥15 岛津txt格式文件转nirs格式
  • ¥15 石墨烯磁表面等离子体
  • ¥15 angular 项目无法启动
  • ¥15 安装wampserver,图标绿色,但是无法进入软件
  • ¥15 C++ MFC 标准库 加密解密解惑
  • ¥15 两条数据合并成一条数据
  • ¥15 Ubuntu虚拟机设置
  • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项
  • ¥15 electron 如何实现自定义安装界面