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()
相关推荐
晨间晓4 小时前
图片里的细小噪点怎么平滑?用华为云码道开发 OpenCV 图像滤波对比工具
人工智能·opencv·华为云
偷吃米饭7 小时前
图片特征怎么描述?用华为云码道开发 OpenCV ORB 特征提取工具
人工智能·opencv·华为云
晨间晓9 小时前
图片里的关键点怎么找?用华为云码道开发 OpenCV FAST 特征点检测工具
人工智能·opencv·华为云
晨间晓9 小时前
二值图里的噪点怎么去掉?用华为云码道开发 OpenCV 形态学操作工具
人工智能·opencv·华为云
晨间晓10 小时前
图片里的角点在哪里?用华为云码道开发 OpenCV Harris 角点检测工具
人工智能·opencv·华为云
晨间晓1 天前
图片细节丰富不丰富?用华为云码道开发 OpenCV 纹理复杂度分析工具
人工智能·opencv·华为云
richard_yuu1 天前
OpenCV 实战第 15 篇:G-API 图计算,工业流水线的 CPU/GPU 混合执行
人工智能·opencv·计算机视觉
老唐7771 天前
OpenCV5实测:纯CPU跑YOLO26目标检测
图像处理·人工智能·opencv·yolo·目标检测·计算机视觉
把我格子衫拿来1 天前
PnP 位姿估计:从二维像素求三维姿态,为什么 tvec 不是相机位置?
python·opencv·计算机视觉·pnp·相机位姿
晨间晓1 天前
图片边缘主要朝哪里?用华为云码道开发 OpenCV 梯度方向分析工具
人工智能·opencv·华为云