lilili07 2022-05-17 13:35 采纳率: 74.1%
浏览 51
已结题

python运用opencv和回调函数制作一个rgb画板

自己写的一个回调函数无法实现rgb颜色调整,希望附上过程,必给采纳

img

  • 写回答

4条回答 默认 最新

  • CSDN专家-HGJ 2022-05-17 14:45
    关注

    在函数nothing的开头定义一下全局变量,加上:
    global brush_color, brush_color, drawing
    改成这样:

    import cv2
    import numpy as np
    
    def nothing(x):
        global brush_color, brush_color, drawing
        cv2.imshow('painting', img)
        r = cv2.getTrackbarPos('r', 'painting')
        g = cv2.getTrackbarPos('g', 'painting')
        b = cv2.getTrackbarPos('b', 'painting')
    
        brush_color = (b, g, r)
        brush_size = cv2.getTrackbarPos('brush size', 'painting')
    
    
    def mouse_event(event, x, y, flags, param):
        '''
        ### 鼠标回调函数
        '''
        global brush_size, brush_color, drawing
    
        if event == cv2.EVENT_LBUTTONDOWN:
            drawing = True
        elif event == cv2.EVENT_MOUSEMOVE:
            if drawing:
                cv2.circle(img, (x, y), brush_size, brush_color, -1)
        elif event == cv2.EVENT_LBUTTONUP:
            drawing = False
            cv2.circle(img, (x, y), brush_size, brush_color, -1)
    
    
    img = np.zeros((300, 512, 3), np.uint8)
    img[:] = (255, 255, 255)  # 定义画板为白色
    cv2.namedWindow('painting')
    # 定义默认的笔刷尺寸和颜色
    brush_size, brush_color = 8, (0, 0, 0)
    drawing = False
    # 创建rgb三个滑动条
    cv2.createTrackbar('r', 'painting', 0, 255, nothing)
    cv2.createTrackbar('g', 'painting', 0, 255, nothing)
    cv2.createTrackbar('b', 'painting', 0, 255, nothing)
    # 创建笔刷大小滑动条
    cv2.createTrackbar('brush size', 'painting', 8, 15, nothing)
    # 定义鼠标回调函数
    cv2.setMouseCallback('painting', mouse_event)
    
    cv2.waitKey()
    cv2.destroyAllWindows()
    
    

    img

    如有帮助,请点采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月17日

悬赏问题

  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档