用滑动条做调色板
目标
- 学会把滑动条绑定到 OpenCV 的窗口
- 学习cv2.getTrackbarPos(),cv2.creatTrackbar()函数的使用
- 理解图片中颜色的保存格式
代码实现调色板
import cv2
import numpy as np
def nothing(x):
pass
# 创建一副黑色图像
img=np.zeros((300,500,3),np.uint8)
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
switch='0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)
while(1):
cv2.imshow('image',img)
k=cv2.waitKey(1)&0xFF
if k==27:
break
r=cv2.getTrackbarPos('R','image')
g=cv2.getTrackbarPos('G','image')
b=cv2.getTrackbarPos('B','image')
s=cv2.getTrackbarPos(switch,'image')
if s==0:
img[:]=0
else:
img[:]=[b,g,r]
cv2.destroyAllWindows()
![](https://i-blog.csdnimg.cn/blog_migrate/2ee409b468ef99a37d87e5766300fd61.png)
代码实现对图像颜色调整
import cv2
import numpy as np
def nothing(x):
pass
# 创建一副黑色图像
#img=np.zeros((300,512,3),np.uint8)
img = cv2.imread('test.jpg')
print(img.dtype)
#img = img.astype(np.float)
orgImg = img.copy()
cv2.namedWindow('image')
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
switch='0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)
while(1):
cv2.imshow('image',img)
k=cv2.waitKey(1)&0xFF
if k==27:
break
r=cv2.getTrackbarPos('R','image')
g=cv2.getTrackbarPos('G','image')
b=cv2.getTrackbarPos('B','image')
s=cv2.getTrackbarPos(switch,'image')
if s==0:
img[:] = orgImg
else:
img[:, :, 0] = (orgImg[:, :, 0] - r)
img[:, :, 1] = (orgImg[:, :, 1] - g)
img[:, :, 2] = (orgImg[:, :, 2] - b)
cv2.destroyAllWindows()
![](https://i-blog.csdnimg.cn/blog_migrate/b4c65869e3b1ef5a89d987ae9172cb2b.png)