使用python

时间:2016-02-15 09:40:39

标签: python loops opencv for-loop mouseevent

import cv2
import numpy as np
boxes = []
d={}
global a
def on_mouse(event, x, y, flags, params):
    if event == cv2.EVENT_LBUTTONDOWN:
        print 'Mouse Position: '+str(x)+', '+str(y)
        sbox = [x, y]
        boxes.append(sbox)
        for a in range(1,4):
            d["string{0}".format(a)]=x,y
img = cv2.imread('SAM15.jpg',0)
img = cv2.resize(img, None, fx = 1,fy = 1)
cv2.namedWindow('real image')
cv2.setMouseCallback('real image', on_mouse, 0)
cv2.imshow('real image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我的目标是分配和打印三个点,我将连续点击图像。我面临的问题是,我只能在图像上打印第三个(最终)点击点。我被困在了循环中。请帮帮我。在此先感谢!

输出应该是这样的 {'string1':( 87,26),'string2':( 84,78),'string3':( 42,62)}

1 个答案:

答案 0 :(得分:0)

现在,每次单击鼠标按钮时,您都会循环遍历a的值。相反,您需要测试以查看boxes中是否有三个元素,并且只有执行for循环才会执行。