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日

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用