调用cv2.setMouseCallb内的函数时出错

2024-06-16 13:41:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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函数中调用它时,我不知道如何解决这个问题。所以请帮我摆脱这一切


Tags: importeventtrueifmode错误np鼠标