【发布时间】:2017-05-11 20:24:00
【问题描述】:
我用 OpenCV 编写了以下脚本
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
ix, iy = -1, -1
def draw_circle(event, x, y, flags, param):
global ix
global iy
ix,iy = x,y
if event == cv2.EVENT_LBUTTONDOWN:
cv2.circle(img, (200, 399), 10, (0, 255, 255), -1)
print("Text Put")
elif event == cv2.EVENT_LBUTTONUP:
print("EVENT_LBUTTONUP")
elif event == cv2.EVENT_RBUTTONDOWN:
print("Appuyé Droite")
elif event == cv2.EVENT_RBUTTONUP:
print("EVENT_RBUTTONUP")
elif event == cv2.EVENT_MOUSEMOVE:
print("Move on", x, y)
while(1):
ret, img = cap.read()
cv2.setMouseCallback('image', draw_circle)
cv2.imshow('image', img)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
但是当我单击右键时,显示屏上没有出现圆圈。我的代码有什么问题?
【问题讨论】:
-
从您的代码中,只有 left 按钮向下触发绘制圆圈,而不是右键。
-
呵呵,对不起,我想说左键,但是当我把 tu circle 放在 while 循环上时,它的工作,圆圈跟随鼠标,但我想放一个修复圆圈,也许是它不工作?
-
只需将
imshow放在draw_circle函数中(最后)。否则,您将在函数内部修改img,但更改是本地的,因此当您在函数外部显示它时,更改将丢失