使用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()