opencv(3):控制鼠标,创建 tackbar控件

文章目录

控制鼠标相关API

  • setMouseCallback(winname, callback, userdata)
  • callback(event, x, y, flags, userdata)

setMouseCallback

在 OpenCV 中,setMouseCallback 函数用于设置鼠标事件的回调函数。它的调用方式如下:

python 复制代码
cv2.setMouseCallback(windowName, onMouse, param)

其中:

  • windowName 是窗口的名称,指定在哪个窗口中设置鼠标事件。
  • onMouse 是鼠标事件的回调函数,它会在鼠标事件发生时被调用。
  • param 是传递给回调函数的可选参数。

callback

鼠标事件的回调函数 onMouse 应该有以下形式:

python 复制代码
def onMouse(event, x, y, flags, param):
    # 处理鼠标事件的逻辑
    pass

参数说明:

  • event:表示触发的鼠标事件类型,可以是 cv2.EVENT_* 常量之一,如 cv2.EVENT_LBUTTONDOWN 表示左键按下事件。
  • x 和 y:表示鼠标事件发生时的鼠标坐标。
  • flags:表示鼠标事件的附加标志,是一个组合值,可以使用 cv2.EVENT_FLAG_* 常量进行检查,如 cv2.EVENT_FLAG_CTRLKEY 表示按下了 Ctrl 键。
  • param:是在设置回调函数时传递的可选参数。

event, flags 的定义在文件 opencv-python\opencv\modules\highgui\include\opencv2\highgui.hpp 中。

OpenCV-Python setMouseCallback回调函数中图像变量img的传递方法解析

TrackBar 控件

  • createTrackBar
  • getTrackbarPos 获取 trackbar 的值

cv2.createTrackbar

用于在窗口中创建滑动条。

参数:

  • trackbarName:滑动条的名称。
  • windowName:包含滑动条的窗口的名称。
  • value:滑动条的初始值。
  • count:滑动条的最大值(最小值默认为0)。
  • onChange:回调函数,当滑动条的值发生改变时调用。

cv2.getTrackbarPos:

用于获取滑动条的当前位置(值)。

参数:

  • trackbarName:滑动条的名称。
  • windowName:包含滑动条的窗口的名称。
python 复制代码
import cv2
import numpy as np

def callback():
    pass

#创建窗口
cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL)

#创建trackbar
cv2.createTrackbar('R', 'trackbar', 0, 255, callback)
cv2.createTrackbar('G', 'trackbar', 0, 255, callback)
cv2.createTrackbar('B', 'trackbar', 0, 255, callback)

#创起家一个背景图片
img = np.zeros((480, 640, 3), np.uint8)

while True:
    
    #获取当前trackbar的值
    r = cv2.getTrackbarPos('R', 'trackbar')
    g = cv2.getTrackbarPos('G', 'trackbar')
    b = cv2.getTrackbarPos('B', 'trackbar')

    #改变背景图片颜色
    img[:] = [b, g, r]
    cv2.imshow('trackbar', img)

    key = cv2.waitKey(10)
    if key & 0xFF == ord('q'):
        break


cv2.destroyAllWindows()
相关推荐
movigo7_dou12 小时前
双目立体匹配
数码相机·opencv·计算机视觉
我材不敲代码14 小时前
OpenCV 背景建模实战:三种方法实现运动目标检测
人工智能·opencv·目标检测
我材不敲代码1 天前
OpenCV 光流估计实战:Lucas-Kanade 算法实现运动目标跟踪
opencv·算法·目标跟踪
Sagittarius_A*2 天前
传统图像分割:阈值 / 区域生长 / 分水岭 / 图割全解析【计算机视觉】
图像处理·人工智能·python·opencv·计算机视觉·图像分割
sali-tec2 天前
C# 基于OpenCv的视觉工作流-章44-直线卡尺
图像处理·人工智能·opencv·算法·计算机视觉
入门工作者2 天前
opencv 轮廓内点集高速获取
人工智能·opencv·计算机视觉
我材不敲代码2 天前
OpenCV实现图像拼接融合——SIFT 特征点实现全景图拼接
人工智能·opencv·计算机视觉
格林威2 天前
工业相机图像采集处理:从 RAW 数据到 AI 可读图像,堡盟相机 C#实战代码深度解析
c++·人工智能·数码相机·opencv·算法·计算机视觉·c#
sali-tec3 天前
C# 基于OpenCv的视觉工作流-章43-轮廓匹配
图像处理·人工智能·opencv·算法·计算机视觉
Fleshy数模3 天前
玩转OpenCV:从角点检测到图像拼接的实战之旅
人工智能·opencv·计算机视觉