OpenCV 鼠标交互

这篇博客介绍了如何利用OpenCV库在Python中实现鼠标交互功能,包括详细步骤教读者如何通过鼠标点击来画圆和画线,为图像处理提供交互式操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、鼠标画圆

import cv2
# 编写回调函数
def draw_circle(event,x,y,flags,param):
#     鼠标左键按下去,实心圆
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(img,center=(x,y),radius=5,
                  color=(255,0,0),thickness=-1)
#         鼠标右键按下去,空心圆
    elif event==cv2.EVENT_RBUTTONDOWN:
        cv2.circle(img,center=(x,y),radius=5,
                   color=(0,255,0),thickness=1)
img = cv2.imread("11.png")
cv2.namedWindow(winname='drawing')
cv2.setMouseCallback('drawing',draw_circle)
while True:
    cv2.imshow("drawing",img)
    # 按q键退出
    if cv2.waitKey(1) & 0xFF ==ord('q'):
        break
cv2.destroyAllWindows()

在这里插入图片描述

二、鼠标画线

import cv2
drawing = False # 是否开始画图
start = (-1,-1)
# 鼠标的回调函数的参数格式是固定的,不要随易更改
def mouse_event(event,x,y,flags,param):
    global start,drawing,mode
    # 左键按下:开始画图
    if event == cv2.EVENT_LBUTTONDOWN:
        drawing = True
        start =(x,y)
     # 鼠标移动,画图  
    elif event == cv2.EVENT_MOUSEMOVE:
        if drawing:
            cv2.circle(img,(x,y),5,(0,0,255),-1)
     # 左键释放:结束画图       
    elif event == cv2.EVENT_LBUTTONUP:
        drawing = False
        cv2.circle(img,(x,y),5,(0,0,255),-1)
        
img = cv2.imread("13.jpg")
cv2.namedWindow(winname='drawing')
cv2.setMouseCallback('drawing',mouse_event)
while True:
    cv2.imshow("drawing",img)
    # 按q键结束
    if cv2.waitKey(1) & 0xFF ==ord('q'):
        break
cv2.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值