OpenCV I_08用滑动条做调色板

来源:互联网 发布:防破解网络验证 编辑:程序博客网 时间:2024/06/13 11:52

目标

• 学会把滑动条绑定到 OpenCV 的窗口
• 你将会学习这些函数:cv2.getTrackbarPos(),cv2.creatTrackbar()

等。



代码示例

现在我们来创建一个简单的程序:通过调节滑动条来设定画板颜色。我们
要创建一个窗口来显示显色,还有三个滑动条来设置 B,G,R 的颜色。当我们
滑动滚动条是窗口的颜色也会发生相应改变。默认情况下窗口的起始颜色为黑。
cv2.getTrackbarPos() 函数的一个参数是滑动条的名字,第二个参数
是滑动条被放置窗口的名字,第三个参数是滑动条的默认位置。第四个参数是
滑动条的最大值,第五个函数是回调函数,每次滑动条的滑动都会调用回调函
数。回调函数通常都会含有一个默认参数,就是滑动条的位置。在本例中这个
函数不用做任何事情,我们只需要 pass 就可以了。
滑动条的另外一个重要应用就是用作转换按钮。默认情况下 OpenCV 本
身不带有按钮函数。所以我们使用滑动条来代替。在我们的程序中,我们要创
建一个转换按钮,只有当装换按钮指向 ON 时,滑动条的滑动才有用,否则窗

户口都是黑的。



代码:

'''函数:cv2.getTrackbarPos(),cv2.createTrackbar()'''import cv2import numpy as np # 结合上一节的知识,创建一个画板,可以自选各种颜色的画笔绘画各种图形。def nothing(x):passdrawing = Falsemode = Trueix,iy = -1,-1def draw_circle(event,x,y,flags,param):r = cv2.getTrackbarPos('R','image')g = cv2.getTrackbarPos('G','image')b = cv2.getTrackbarPos('B','image')color = (b,g,r)global ix,iy,drawing,modeif event == cv2.EVENT_LBUTTONDOWN:drawing = Trueix,iy = x,yelif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:if drawing == True:if mode == True:cv2.rectangle(img,(ix,iy),(x,y),color,-1)else:cv2.circle(img,(x,y),2,color,-1)elif event == cv2.EVENT_LBUTTONUP:drawing == Falseimg = cv2.imread('PIC/000.jpg')cv2.namedWindow('image')cv2.createTrackbar('R','image',0,255,nothing)cv2.createTrackbar('G','image',0,255,nothing)cv2.createTrackbar('B','image',0,255,nothing)cv2.setMouseCallback('image',draw_circle)while (1):cv2.imshow('image',img)k = cv2.waitKey(1) if k == ord('m'):mode = not modeelif k == ord('q'):breakcv2.destroyAllWindows()



运行结果:

按q退出程序

0 0
原创粉丝点击