当前位置: 首页 > 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()

相关文章:

  • Django学习日志05
  • vscode 配置 lua
  • 量化交易:公司基本面的量化
  • pytorch 安装 2023年
  • 【咖啡品牌分析】Google Maps数据采集咖啡市场数据分析区域分析热度分布分析数据抓取瑞幸星巴克
  • Hoppscotch:开源 API 开发工具,快捷实用 | 开源日报 No.77
  • Polygon zkEVM的Dragon Fruit和Inca Berry升级
  • Python------列表 集合 字典 推导式(本文以 集合为主)
  • 编译智能合约以及前端交互工具库(Web3项目一实战之三)
  • 视频怎么做成二维码?在线教学视频码的制作技巧
  • FISCO BCOS 3.0【02】配置和使用系统自带的控制台
  • MFC 对话框
  • C语言——冒泡排序
  • 从服务器端获取人脸数据,在本地检测特征,并将特征发送给服务器
  • ubuntu20中安装cmake-gui
  • 2017 年终总结 —— 在路上
  • Angular 4.x 动态创建组件
  • Go 语言编译器的 //go: 详解
  • HTML-表单
  • Java比较器对数组,集合排序
  • Java应用性能调优
  • node.js
  • React系列之 Redux 架构模式
  • 百度地图API标注+时间轴组件
  • 后端_ThinkPHP5
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 全栈开发——Linux
  • 深入浅出webpack学习(1)--核心概念
  • 使用agvtool更改app version/build
  • 原生Ajax
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 安徽锐锋科技IDMS系统简介
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #define、const、typedef的差别
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (BFS)hdoj2377-Bus Pass
  • (function(){})()的分步解析
  • (LeetCode C++)盛最多水的容器
  • (TOJ2804)Even? Odd?
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (生成器)yield与(迭代器)generator
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • .aanva
  • .form文件_一篇文章学会文件上传
  • .NET Micro Framework 4.2 beta 源码探析
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET与 java通用的3DES加密解密方法
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @NoArgsConstructor和@AllArgsConstructor,@Builder