在cv2.setMouseCallback内部调用函数时出现错误

时间:2019-12-12 13:23:57

标签: python function opencv oop

我有两个python文件,一个用于使用鼠标事件绘制线条,另一个用于在框架上绘制这些线条。因此,当我在opencv的setMouseCallBack函数内调用鼠标事件时,会引发错误。我是新手,所以请帮助我。 第一个文件

import cv2
import numpy as np 

drawing=False # true if mouse is pressed
mode=True # if True, draw rectangle. Press 'm' to toggle to curve

# mouse callback function
class getPoints():

    def interactive_drawing(event,x,y,flags,param):
        global ix,iy,drawing, mode
        if event==cv2.EVENT_LBUTTONDOWN:
            drawing=True
            ix,iy=x,y
        elif event==cv2.EVENT_MOUSEMOVE:
            if drawing==True:
                if mode==True:
                    cv2.circle(frame,(x,y),1,(0,0,255),-1)
                    print("move",x,y)
        elif event==cv2.EVENT_LBUTTONUP:
            drawing=False
            if mode==True:
                cv2.circle(frame,(x,y),1,(0,0,255),-1)
                print("end",x,y)

第二个文件

from mouseclickevents import getPoints
import cv2
import numpy as np
import imutils

gp = getPoints()

frame = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('Window')
cv2.setMouseCallback('Window',gp.interactive_drawing)
while(1):
    cv2.imshow('Window',frame)
    k=cv2.waitKey(1)&0xFF
    if k== ord('q'):
        break
cv2.destroyAllWindows()

所以我收到以下错误“ TypeError:interactive_drawing()接受5个位置参数,但给出了6个位置参数”,我理解了错误的含义,但事实是,因为我在setMouseCallBack函数内部调用它不知道该如何解决。因此,请帮助我摆脱困境。

0 个答案:

没有答案