Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将循环中的值分配并打印到不同的变量_Python_Loops_Opencv_For Loop_Mouseevent - Fatal编程技术网

使用python将循环中的值分配并打印到不同的变量

使用python将循环中的值分配并打印到不同的变量,python,loops,opencv,for-loop,mouseevent,Python,Loops,Opencv,For Loop,Mouseevent,我的目标是分配并打印我将连续单击图像的三个点。我面临的问题是,我只能在图像上打印第三个(最后一个)点击点。我被套圈卡住了。请帮帮我。提前谢谢 输出应该是这样的 {'string1':(87,26),'string2':(84,78),'string3':(42,62)}现在,每次单击鼠标按钮时,您都会循环浏览a的值。相反,您需要测试框中是否有三个元素,如果有,则只执行for循环。如何测试框中的三个元素?我无法通过@SStevenow访问您。盒子里有三个元素。我可以打印个人运行后。但是,我尝试在程

我的目标是分配并打印我将连续单击图像的三个点。我面临的问题是,我只能在图像上打印第三个(最后一个)点击点。我被套圈卡住了。请帮帮我。提前谢谢

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

现在,每次单击鼠标按钮时,您都会循环浏览
a
的值。相反,您需要测试
框中是否有三个元素,如果有,则只执行for循环。

如何测试框中的三个元素?我无法通过@SStevenow访问您。盒子里有三个元素。我可以打印个人运行后。但是,我尝试在程序本身中打印框[0]之类的元素。它的显示方式类似于-indexeror:list index超出范围。@SSteveIt听起来您需要进行一些基本调试。在尝试访问元素(或仅访问由数组长度控制的循环中的元素)之前,请始终检查数组的长度。如果您的数组在您不希望它为空的情况下为空,则需要跟踪代码,必要时添加调试语句,以查看数组值的变化位置。
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()