Python 2.7 python中def()语句内的标志增量错误
我编写了一个示例代码,它打印鼠标点击,如果点击了特定的点,则会显示一个递增1的标志。当点击其他位置时,同一个标志会减少1。同时打印该标志。但是出现了一些错误。如何避免Python 2.7 python中def()语句内的标志增量错误,python-2.7,numpy,opencv,Python 2.7,Numpy,Opencv,我编写了一个示例代码,它打印鼠标点击,如果点击了特定的点,则会显示一个递增1的标志。当点击其他位置时,同一个标志会减少1。同时打印该标志。但是出现了一些错误。如何避免 import cv2 import glob image_count=0 global file_number global total_files file_number=30 def click_event(event, x, y, flags, param): if event == cv2.EVENT_LBUTTO
import cv2
import glob
image_count=0
global file_number
global total_files
file_number=30
def click_event(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
print x, y
if 28<x<287 and 29<y<65: #open
file_number=100
print(file_number)
if 33<x<144 and 89<y<120: #prev
file_number=file_number-1
print(file_number)
if 163<x<283 and 91<y<122: #next
file_number=file_number+1
print(file_number)
imdir = '/media/aju/21D83BA336AE27A9/idcard/'
ext = ['png', 'jpg', 'gif'] # Add image formats here
files = []
[files.extend(glob.glob(imdir + '*.' + e)) for e in ext]
images = [cv2.imread(file) for file in files]
print(files)
total_files=len(files)
print(total_files)
img = cv2.imread('menu.png')
cv2.imshow('Main Menu', img)
cv2.setMouseCallback("Main Menu", click_event)
cv2.waitKey(0)
cv2.destroyAllWindows
我解决了这个问题,将变量
file\u number
声明为global
insidedef()
如果x==40
和y==100
,那么filenumber
应该有什么值呢?实际上x和y是鼠标在图像上单击的位置。第一次单击相应的位置就会出现这些错误。**您的答案:-**`这取决于点击次数`我想提示您错误的原因。如果x
/y
具有这些值,则仅输入#prev
案例,其中执行filenumber=filenumber-1
。但是如果在第一次单击时发生这种情况,filenumber
以前从未定义过,这将导致您看到的错误。您需要确定filenumber
的初始值,以便在所有情况下都可以执行#prev
块(或者确保在输入#open
之前不能输入)但是x==40和y==100只是一个位置。如果我第一次点击位置满足,打开工作,然后如果我按下一个位置满足,prev将导致相同的错误。(根据概念,第一次点击“打开”,下一次点击“prev”,文件编号设置为100,正确吗?但为什么会发生错误?)
Traceback (most recent call last):
File "final07_11_2018.py", line 14, in click_event
file_number=file_number-1
UnboundLocalError: local variable 'file_number' referenced before assignment