设置rgb三个进度条,图片初始颜色为黑,颜色随着进度条变化,显示随时变化的直方图,用python写出来
时间: 2024-01-11 14:20:47 浏览: 58
选择任意图片,在lab、rgb、hsv色域空间,查找任意颜色工具,python源码
5星 · 资源好评率100%
以下是一个基于Python和OpenCV实现的简单程序,可以实现设置RGB三个进度条,根据进度条的变化来修改显示图片的颜色,并随时更新显示直方图的功能:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 定义窗口名称
win_name = "RGB Histogram"
# 定义RGB三个进度条的名称和初始值
bar_names = ['R', 'G', 'B']
bar_values = [0, 0, 0]
# 创建窗口和进度条
cv2.namedWindow(win_name)
cv2.createTrackbar(bar_names[0], win_name, 0, 255, lambda x: None)
cv2.createTrackbar(bar_names[1], win_name, 0, 255, lambda x: None)
cv2.createTrackbar(bar_names[2], win_name, 0, 255, lambda x: None)
# 读入黑色的图片
img = np.zeros((512, 512, 3), np.uint8)
# 显示窗口,并进入消息循环
cv2.imshow(win_name, img)
while True:
# 获取RGB三个进度条的当前值
for i in range(3):
bar_values[i] = cv2.getTrackbarPos(bar_names[i], win_name)
# 修改图片的颜色
img[:, :] = (bar_values[2], bar_values[1], bar_values[0])
# 计算直方图并显示
hist = cv2.calcHist([img], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0, 256])
plt.plot(hist)
plt.xlim([0, 256])
plt.ylim([0, 10000])
plt.show()
# 显示图片和等待按键事件
cv2.imshow(win_name, img)
if cv2.waitKey(1) == ord('q'):
break
# 释放窗口资源
cv2.destroyAllWindows()
```
在程序中,我们首先定义了窗口名称、RGB三个进度条的名称和初始值,然后创建了窗口和进度条,并读入了一张黑色的图片。在进入消息循环之后,程序会不断获取RGB三个进度条的当前值,并根据这些值来修改图片的颜色,并计算并显示直方图。最后,程序会显示图片并等待按键事件,如果按下了“q”键,则退出消息循环并释放窗口资源。
阅读全文