python opencv调色板

本博客介绍了一个使用Python和OpenCV库创建交互式颜色调色板的方法。通过调节滑块,用户可以实时调整RGB颜色值并在窗口中显示所选颜色。此程序为学习OpenCV基本操作和色彩调整提供了实用的示例。
# -*- coding: utf-8 -*-

import numpy as np
import cv2

def nothing(x):
	pass
	
def palette():
	img=np.zeros((300,1378,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)
	
	#print(img)
	
	while True:
		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()

def main():
	palette()

if __name__ == '__main__':
	main()

 

OpenCV库中,处理图像色彩通常涉及到读取、调整颜色空间、选择颜色范围或创建调色板。这里是一个基本的步骤来生成一个简单的调色板: 1. **加载图像**:首先,你需要通过`cv2.imread()`函数从文件或视频流中加载图片。 ```python import cv2 img = cv2.imread('image.jpg') ``` 2. **转换到HSV或Lab空间**:OpenCV提供`cv2.cvtColor()`函数将BGR图像转换成HSV(Hue Saturation Value)或Lab(Lightness, a*, b*)等更容易进行颜色操作的空间。 ```python hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) ``` 3. **选择感兴趣的颜色范围**:例如,如果你想要提取某个特定的色调,可以设定HSV或Lab颜色的阈值。 ```python lower_range = (0, 50, 50) # 选取蓝色区域为例,范围可以根据需要调整 upper_range = (10, 255, 255) mask = cv2.inRange(hsv_img, lower_range, upper_range) ``` 4. **创建调色板**:使用`cv2.findContours()`找出颜色区域,并根据找到的轮廓创建调色板。这一步可能涉及到对每个轮廓应用不同的颜色标记。 ```python contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) color_palette = [None] * len(contours) for i, contour in enumerate(contours): color_palette[i] = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # 可以为每个轮廓分配随机颜色 ``` 5. **合并原图与调色板**:将调色板的颜色叠加到原始图像上,展示出选定的颜色分布。 ```python result = img.copy() for i, c in enumerate(color_palette): cv2.drawContours(result, contours, i, c, -1) plt.imshow(result) ``` 注意:上述代码片段是简化的,实际操作中可能需要根据具体需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值