Jun666

导航

 

回调函数包含两部分,一部分画矩形,一部分画圆圈。

把这个回调函数与 OpenCV 窗口绑定在一起。在主循环中我
们需要将键盘上的“m”键与模式转换绑定在一起。

# -*- coding: utf-8 -*-

import cv2
import numpy as np

drawing = False
mode = True
ix,iy = -1,-1
def draw_circle(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 and flags == cv2.EVENT_FLAG_LBUTTON:
		if drawing == True:
			if mode == True:
				cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
			else:
				cv2.circle(img,(x,y),3,(0,0,255),-1)
	elif event == cv2.EVENT_LBUTTONUP:
		drewing = False

img = np.zeros((512,512,3),np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)

while(1):
	cv2.imshow('image',img)
	k=cv2.waitKey(1)&0xFF
	if k==ord('m'):
		mode=not mode
	elif k==27:
		break
cv2.destroyAllWindows()

  注意mode的使用,以及全局变量,鼠标的使用

posted on 2018-06-26 21:26  Jun666  阅读(525)  评论(0)    收藏  举报