マウスで画像の領域を選択する マウスで移動中に描画すると残像が表示されてしまう 画像をオリジナルにリフレッシュすることはできる?
import cv2
import numpy as np
# マウスが押されたときにTrueとなる
drawing = False
# Trueなら長方形を描画(mキーで切り替え)
mode = True
ix, iy = -1, -1
def draw_circle(event, x, y, flags, param):
global ix, iy, drawing, mode
if event == cv2.EVENT_LBUTTONDOWN:
# 左ボタンを押したら描画開始
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
# マウスを移動中も描画
if drawing:
if mode:
pass
# マウス移動中は描画しない
# マウス移動中に残像を描画させないようにするためには?
# 画面をリフレッシュできればよいが・・・
# cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 1)
else:
cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
if mode:
cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 2)
else:
cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_circle)
while True:
cv2.imshow('image', img)
k = cv2.waitKey(1)
if k == ord('m'):
mode = not mode
elif k == 27:
break
cv2.destroyAllWindows()