当前位置: 首页 > news >正文

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

文章目录

  • 控制鼠标相关API
    • setMouseCallback
      • callback
  • TrackBar 控件
    • cv2.createTrackbar
    • cv2.getTrackbarPos:

控制鼠标相关API

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

setMouseCallback

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

cv2.setMouseCallback(windowName, onMouse, param)

其中:

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

callback

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

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:包含滑动条的窗口的名称。
import cv2
import numpy as npdef 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'):breakcv2.destroyAllWindows()
http://www.lryc.cn/news/234638.html

相关文章:

  • UE4动作游戏实例RPG Action解析二:GAS系统播放武器绑定的技能,以及GE效果
  • 做完这些_成为机器学习方面的专家
  • kubernetes|云原生| 如何优雅的重启和更新pod---pod生命周期管理实务
  • 【总结】坐标变换和过渡矩阵(易忘记)
  • 第十一周任务总结
  • Java Web——JavaScript基础
  • Vue3 toRaw 和 markRaw
  • 麒麟信安助力长沙市就业与社保数据服务中心政务系统向自主创新演进
  • 【LeetCode刷题-双指针】--16.最接近的三数之和
  • Mac 安装 protobuf 和Android Studio 使用
  • MongoDB入门级别教程全(Windows版,保姆级教程)
  • 基于机器学习的居民消费影响因子分析预测
  • Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)
  • srs webrtc推拉流环境搭建(公网)
  • 【Flutter】设计原则(2)深入解析 SOLID 原则的应用
  • python爬虫概述及简单实践:获取豆瓣电影排行榜
  • ts视频文件转为mp4(FFmpeg)
  • 2023年咸阳市《网络建设与运维》赛题解析------四、安全配置
  • 什么是java枚举?为什么要用java枚举?
  • USB复合设备构建CDC+HID鼠标键盘套装
  • 准备篇(四)HTTP 基本原理
  • 模板初阶笔记分享
  • 使用Spring Boot实现大文件断点续传及文件校验
  • 读取PDF中指定数据写入EXCEL文件
  • [黑马程序员SpringBoot2]——开发实用篇1
  • Python------列表 集合 字典 推导式(本文以 集合为主)
  • 网工内推 | Linux运维,六险二金,最高30K,IE认证优先
  • 服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2
  • 12-1- GAN -简单网络-线性网络
  • Antv/G2 分组柱状图+折线图双轴图表