opencv004 trackbar控件

trackbar是一个可拖动的控件,像一个调色板,可以拖到想要的值,可以控制三原色,但不只是三原色(三原色应用最多),一起来学习吧!

通过api接口

应用程序接口(API:Application Program Interface)

API接口最常见于前后端,API接口大多数是由后端编写,前端开发人员进行请求调用。

我们通过API接口来实现特定的功能,而调用者不需要了解其内部实现细节。也可以把API接口理解为是对特定服务(service)的一种封装,将服务封装起来提供给他人调用,这样不需要重新开发即可实现功能,也可以很好的保护数据的安全。

后端API接口一般采用Java、PHP、C#、Pyhon、C/C++、Ruby、Scala等一种或多种后端语言开发搭建,提供了数据存储、通讯、各类服务等功能。一般使用HTTPS协议进行通讯(部分还在使用HTTP协议),使用JSON格式序列化返回接口结果和数据(部分使用xml格式返回)。

创建trackbar:

python 复制代码
createtrackbar(trackbarname, winname, value, count, onChange )

参数说明:

  • 1.trackbarname:名字
  • 2.winname:窗口的名字
  • 3.value:trackbar按钮的默认值
  • 4.count:bar的最大值
  • 5.onChange:你希望trackbar数值改变可以做什么事情

改变trackbar:

python 复制代码
getTrackbarPos(trackbarname, winname)

获取Trackbar当前值

实例:

1、创建窗口

python 复制代码
cv.namedWindow('trackbar', cv.WINDOW_NORMAL)
cv.resizeWindow('trackbar', 640, 480)

使用函数说明:

格式

python 复制代码
cv2.namedWindow(winname,flags)

参数

  • winname:窗口名
  • flags:窗口创建模式
    • WINDOW_NORMAL 或 WINDOW_AUTOSIZE / 窗口尺寸可变或 窗口尺寸为图像尺寸,不可变
    • WINDOW_KEEPRATIO 或 WINDOW_FREERATIO / 保持图像宽高比 或 图像宽高比可变
    • WINDOW_GUI_EXPANDED 或 WINDOW_GUI_NORMAL / 窗口带有工具栏和状态栏 或 窗口不带工具栏和状态栏
  • 默认的 flags 为:WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED
python 复制代码
cv.resizeWindow(winname, 宽, 高)

2、定义回调函数

python 复制代码
def callback(value):
    print(value)

python中定义函数的格式:

python 复制代码
def 函数名(参数):
    函数体

3、创建三个trackbar

python 复制代码
cv.createTrackbar('R', 'trackbar', 0, 255, callback)
cv.createTrackbar('G', 'trackbar', 0, 255, callback)
cv.createTrackbar('B', 'trackbar', 0, 255, callback)

4、创建背景图片

python 复制代码
img = np.zeros((480, 640, 3), np.uint8)
while True:
    r = cv.getTrackbarPos('R', 'trackbar')
    g = cv.getTrackbarPos('G', 'trackbar')
    b = cv.getTrackbarPos('B', 'trackbar')

np.unit8:

无符号8位整数(uint8)是一种数据类型,通常用于表示整数,但它不包括负数,只能表示非负的整数值。它的范围是从 0 到 255,共有 256 个不同的可能取值。

在计算机中,整数数据类型可以分为有符号和无符号。有符号整数可以表示正数、负数和零,而无符号整数只能表示非负的整数。

在图像处理中,无符号8位整数通常用于表示灰度图像的像素值。一个像素的灰度值代表了图像中对应点的亮度强度,通常从 0(黑色)到 255(白色)范围。由于图像中的像素值不会有负数,因此使用无符号整数类型更加合适。

5、 用修改的三个值更改图片颜色

python 复制代码
 # 接上面的while  
    img[:] = [b, g, r]
    cv.imshow('trackbar', img)
    key = cv.waitKey(1)
    if key == ord('q'):
        break
cv.destroyAllWindows()

成功!

python 复制代码
import cv2 as cv
import numpy as np
# 创建窗口
cv.namedWindow('trackbar', cv.WINDOW_NORMAL)
cv.resizeWindow('trackbar', 640, 480)
# 定义回调函数
def callback(value):
    print(value)
# 创建三个trackbar
cv.createTrackbar('R', 'trackbar', 0, 255, callback)
cv.createTrackbar('G', 'trackbar', 0, 255, callback)
cv.createTrackbar('B', 'trackbar', 0, 255, callback)
# 创建背景图片
img = np.zeros((480, 640, 3), np.uint8)
while True:
    r = cv.getTrackbarPos('R', 'trackbar')
    g = cv.getTrackbarPos('G', 'trackbar')
    b = cv.getTrackbarPos('B', 'trackbar')
# 用获取的三个值修改背景图片颜色
    img[:] = [b, g, r]
    cv.imshow('trackbar', img)
    key = cv.waitKey(1)
    if key == ord('q'):
        break
cv.destroyAllWindows()

最后,新年快乐哦!又学到了新知识,给自己和这篇文章都点个赞吧^_^

相关推荐
志尊宝13 小时前
AI原生前端开发(043):AI辅助的样式生成(Tailwind CSS)
前端·css·ai-native
LaughingZhu13 小时前
Product Hunt 热榜 2026-11-02:Screen Studio 4.0、ClawsGO Science、Riverside Agents
人工智能·深度学习·神经网络·数码相机·搜索引擎·百度
mumu15713 小时前
快速上手大模型推理vllm
人工智能·python·大语言模型·agent·vllm
明天会有多晴朗13 小时前
从零手写 Transformer!一个 Python 文件跑通英译中(PyTorch 附完整源码)
人工智能·pytorch·python·深度学习·transformer
田里的水稻13 小时前
FA_CNN卷积神经网络二十一---丢弃法PyTorch
人工智能·pytorch·cnn
学IT的周星星13 小时前
本地部署与开源模型:不想花钱怎么办
人工智能·开源·大模型·llm·agent
dialect_13 小时前
CODEFORCES ROUND 1127 DIV2
开发语言·c++·算法
king王一帅13 小时前
QuireKit 编辑器的 AI-Native 是如何设计的?谈谈我对真正 AI-Native 的理解
前端·开源·agent
AI人工智能+13 小时前
炫彩活体检测利用手机屏幕投射随机彩色光,通过分析真实皮肤对光的次表面散射、血红蛋白吸收及纹理细节等光学特性,实现1-2秒内无感核验
人工智能·深度学习·人脸识别·炫彩活体检测
沐梯子13 小时前
MOSS-Transcribe-Diarize 和豆包语音识别哪个好?多人会议录音转写的准确率与说话人归属对比
人工智能·语音识别·xcode