OpenCV图像处理技术(Python)——鼠标交互区域生长算法

本文介绍了图像分割与提取的概念,重点讲解了OpenCV中的鼠标交互和区域生长算法。通过实例展示了如何利用鼠标交互进行图像区域生长,实现图像数据标注,包括定义Point类、计算像素偏差、设定邻域和生长函数的应用。
摘要由CSDN通过智能技术生成

©FuXianjun


图像分割与提取的概念

在图像处理的过程中, 经常需要从图像中将前景对象作为目标图像提取出来。例如无人驾驶技术, 我们关心的是周围的交通工具, 其他障碍物等, 而对于背景本身并不关注, 故而, 我们需要将这些东西从图片(视频)中提取出来, 而忽略那些只有背景的图像

分水岭算法的概念

图像的灰度空间很像地球表面的整个地理结构,每个像素的灰度值代表高度。其中的灰度值较大的像素连成的线可以看做山脊,也就是分水岭。

当水平面上升到一定高度时,水就会溢出当前山谷,可以通过在分水岭上修大坝,从而避免两个山谷的水汇集,这样图像就被分成2个像素集,一个是被水淹没的山谷像素集,一个是分水岭线像素集。最终这些大坝形成的线就对整个图像进行了分区,实现对图像的分割。

在这里插入图片描述

在这里插入图片描述

分水岭算法的步骤

在这里插入图片描述

鼠标交互

opencv的鼠标交互操作主要通过两个函数实现:
第一个是cv2.setMouseCallback(windowName, onMouse [, param])
第二个是setMouseCallback()的第二个参数,称为鼠标回调函数onMouse(event, x, y, flags, param)

鼠标交互函数

setMouseCallback()

cv2.setMouseCallback(windowName, onMouse [, param])

windowName:必需。类似于cv.imshow()函数,opencv具体操作哪个窗口以窗口名作为识别标识,这有点类似窗口句柄的概念。

onMouse()

onMouse:必需。鼠标回调函数。鼠标回调函数的定义是onMouse(event, x, y, flags, param),我们想要做什么鼠标操作,都是在这个函数内实现。
onMouse(event, x, y, flags,param)

event:由回调函数根据鼠标对图像的操作自动获得,内容包含左键点击,左键弹起,右键点击…等等等非常多的操作。
x,y:由回调函数自动获得,记录了鼠标当前位置的坐标,坐标以图像左上角为原点(0, 0),x方向向右为正,y方向向下为正。
flags:记录了一些专门的操作,下面有说明。
param:从setMouseCallback()里传递过来的参数。该参数在setMouseCallback()处是可选参数,所以可以不设置。

event类型

各个鼠标事件的含义(用时现查)
在这里插入图片描述

区域生长算法的概念

选取某个种子点(一般实际交互时就是鼠标点击的位置),从图像种子点位置开始,将种子点相邻的符合某个阈值范围内的像素添加到生长区域中,接着判断下一个像素点,直到没有可以符合条件的像素为止,此时分割完毕。

区域生长算法的步骤

在这里插入图片描述
在这里插入图片描述

区域生长算法的案例演示

在这里插入图片描述

实战

使用鼠标交互函数,实现图像数据标注

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
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值