opencv——OpenCV中的滑动条

1、API函数实现调色板 

#!/usr/bin/env python3
# -*- coding:UTF8 -*-

"""
学习使用函数cv2.getTrackbarPos()和cv2.createTrackbar()分别用来获取滑动条参数和创建滑动条。
cv2.getTrackbarPos()函数原型如下:
    getTrackbarPos(trackbarname, winname) -> retval
cv2.creatTrackbar()函数原型如下:
    createTrackbar(trackbarName, windowName, value, count, onChange) -> None
        参数1 trackbarName:轨迹条名字
        参数2 windowName:窗口名字
        参数3 value:滑块初始位置
        参数4 count:表示滑块达到最大位置的值
        参数5 onChange:默认值为0,指向回调函数
"""

import cv2 as cv
import numpy as np

# 创建一张灰度图
img = np.ones((500, 500, 3), np.uint8) * 127


def nothing(x):
    pass


cv.namedWindow('image')
# 创建滑动条
cv.createTrackbar('R', 'image', 0, 255, nothing)
cv.createTrackbar('G', 'image', 0, 255, nothing)
cv.createTrackbar('B', 'image', 0, 255, nothing)

while True:
    R = cv.getTrackbarPos('R', 'image')
    G = cv.getTrackbarPos('G', 'image')
    B = cv.getTrackbarPos('B', 'image')
    img[:] = [B, G, R]
    cv.imshow('image', img)

    k = cv.waitKey(25) & 0xFF
    if chr(k) == 'q':
        break
cv.destroyWindow('image')

2、使用回调函数完成调色板

#!/usr/bin/env python3
# -*- coding:UTF8 -*-

"""
学习使用函数cv2.getTrackbarPos()和cv2.createTrackbar()分别用来获取滑动条参数和创建滑动条。
cv2.getTrackbarPos()函数原型如下:
    getTrackbarPos(trackbarname, winname) -> retval
cv2.creatTrackbar()函数原型如下:
    createTrackbar(trackbarName, windowName, value, count, onChange) -> None
        参数1 trackbarName:轨迹条名字
        参数2 windowName:窗口名字
        参数3 value:滑块初始位置
        参数4 count:表示滑块达到最大位置的值
        参数5 onChange:默认值为0,指向回调函数
"""

import cv2 as cv
import numpy as np

# 创建一张灰度图
img = np.zeros((500, 500, 3), np.uint8)


# 蓝色通道滑动条回调函数
def BlueColorChange(blue):
    global img
    img[:, :, 0] = blue


# 绿色通道滑动条回调函数
def GreenColorChange(green):
    global img
    img[:, :, 1] = green


# 红色通道滑动条回调函数
def RedColorChange(red):
    global img
    img[:, :, 2] = red


cv.namedWindow('image')
# 创建窗口和滑动条
cv.createTrackbar('R', 'image', 0, 255, RedColorChange)
cv.createTrackbar('G', 'image', 0, 255, GreenColorChange)
cv.createTrackbar('B', 'image', 0, 255, BlueColorChange)

while True:
    cv.imshow('image', img)  # 循环显示图像

    k = cv.waitKey(25)  # 当‘q’(对应ASCII码为113)按下时退出程序
    if k == 113:
        break

cv.destroyWindow('image')  # 销毁所有窗口

 

你可能感兴趣的:(OpenCV)