OpenCV-Python系列·第十八集:鼠标事件

版权声明:本文为博主原创文章,未经博主允许不得转载。若有任何问题,请联系QQ:575925154(加好友时,请备注:CSDN) https://blog.csdn.net/Miracle0_0/article/details/82081298

小案例:点击鼠标左键,点亮象限。

# -*- coding: utf-8 -*-
"""
Created on Sun Aug 26 14:52:20 2018

@author: Miracle
"""

import cv2
import numpy as np

#鼠标点亮象限
def detectQuadrant(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDOWN:
        if x > width/2:
            if y > height/2:
                #第四象限
                point_top_left = (int(width/2),int(height/2))
                point_bottom_right = (width-1,height-1)
            else:
                #第二象限
                point_top_left = (int(width/2),0)
                point_bottom_right = (width-1,int(height/2))
        elif x < width/2:
            if y > height/2:
                #第三象限
                point_top_left = (0,int(height/2))
                point_bottom_right = (int(width/2),height-1)
            else:
                #第一象限
                point_top_left = (0,0)
                point_bottom_right = (int(width/2),int(height/2))
        #创建矩形框
        cv2.rectangle(image,(0,0),(width-1,height-1),
                      (255,255,255),-1)
        cv2.rectangle(image,point_top_left,point_bottom_right,
                      (0,255,0),-1)

if __name__ == '__main__':
    #设置宽、高
    width,height = 640,480
    #创建一个全白图像
    image = 255 * np.ones((height,width,3),dtype = np.uint8)
    #创建窗口
    cv2.namedWindow('Quadrant')
    #设置回滚函数
    cv2.setMouseCallback('Quadrant',detectQuadrant)
    #无限循环
    while True:
        cv2.imshow('Quadrant',image)
        if cv2.waitKey(10) == 27:
            break
    cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/Miracle0_0/article/details/82081298
今日推荐