Python-OpenCV(2)

这次咱们写个有点意思的东西,上个博客在最后写了画线、画矩形之类的,涉及到取颜色(r g b值),这次咱们就写个图形化的调色板。
具体就是:
三个滑动条分别代表R、G、B的值,下方有个矩形区域,显示颜色


cv2.createTrackbar(trackbarName, windowName, value, count, onChange) # 创建滑动条
cv2.getTrackbarPos(trackbarname, winname) # 获取滑动条的值

其中的参数含义相信大家看名字就能明白了,不多说了

代码:

__author__ = 'gavinzhou'
# -*- coding: utf-8 -*-

import cv2
import numpy as np


def recall_nothing():
    """
    回调函数,我们不做任何事情所以直接pass
    :return:
    """
    pass


# 创建一幅三通道的图
image = np.zeros((300, 500, 3), dtype=np.uint8)
cv2.namedWindow('Image')

# 创建滑动条
cv2.createTrackbar('R', 'Image', 0, 255, recall_nothing)
cv2.createTrackbar('G', 'Image', 0, 255, recall_nothing)
cv2.createTrackbar('B', 'Image', 0, 255, recall_nothing)

# 创建开关(0表示关闭RGB的调色效果,此时效果为黑)
switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch, 'Image', 0, 1, recall_nothing)


while 1:
    cv2.imshow('Image', image)
    key = cv2.waitKey(1) & 0xFF
    if key == 27:
        # 'ESC键代表退出'
        break
    # 获得各个滑动条的值
    r = cv2.getTrackbarPos('R', 'Image')
    g = cv2.getTrackbarPos('G', 'Image')
    b = cv2.getTrackbarPos('B', 'Image')
    s = cv2.getTrackbarPos(switch, 'Image')

    # 显示
    if s == 0:
        # 开关关闭,显示全黑
        image[:] = 0
    else:
        # 对于彩色图像(RGB),OpenCV按照BGR来显示,Matplotlib按照RGB来显示
        image[:] = [b, g, r]

结果是:

可以使用,OK的!!

对于这部分大家有兴趣的可以看看OpenCV中的事件及回调函数,百度下关键字,就能找到更多的资源和教程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值