hsv

RGB to HSV in numpy

偶尔善良 提交于 2021-01-29 06:44:51
问题 I'm trying to implement RGB to HSV conversion from opencv in pure numpy using formula from here: def rgb2hsv_opencv(img_rgb): img_hsv = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2HSV) return img_hsv def rgb2hsv_np(img_rgb): assert img_rgb.dtype == np.float32 height, width, c = img_rgb.shape r, g, b = img_rgb[:,:,0], img_rgb[:,:,1], img_rgb[:,:,2] t = np.min(img_rgb, axis=-1) v = np.max(img_rgb, axis=-1) s = (v - t) / (v + 1e-6) s[v==0] = 0 # v==r hr = 60 * (g - b) / (v - t + 1e-6) # v==g hg = 120 +

how to i specify the upper and the lower value of a color in HSV opencv python

吃可爱长大的小学妹 提交于 2021-01-28 20:13:41
问题 I found way to convert RGB to HSV, but still I am unable to find the upper and lower value of color. How to do i calculate that? I have to take out the pickachu from the image and this my code till now import cv2 import numpy as np cap = cv2.VideoCapture(0) while True: _, frame = cap.read() hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) lower_red = np.array([30,50,50]) upper_red = np.array([255,255,180]) #it is trial and error mask = cv2.inRange(frame, lower_red, upper_red) res = cv2.bitwise

Sort list of colors by HSV/HSB

纵饮孤独 提交于 2021-01-28 01:52:59
问题 I am looking to sort a very long list of colors by their HSV/HSB values. I would like to sort them by Hue, then Sat, then Bright. Really all I need is a way to tell if one color comes "before" or "after" based on that order of HSV since I am just going to make a compareTo() in Java and use a TreeSet to do the ordering. In Java, HSV values are all stored as floats. I am terrible at algorithms like these so any help would be appreciated! 回答1: The brute force way: public final class

Shifting HSV pixel values in python using Numpy

不羁岁月 提交于 2020-03-23 04:09:29
问题 I'm trying to convert (shift) the values of every pixel in an HSV image (taken from a frame of a video). The idea is to invert yellow and red colours into blue colour (to avoid using three threshold later in the program, when I can use just one) by inverting the red and yellow values into blue values using following equation. (Hue + 90) % 180 (in OpenCV 3 Hue is in range [0,180]) Here's what I came up with: hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV); H = hsv[:,:,0] mask= [H<75 and H>128]

图像处理100问(1~5)

大兔子大兔子 提交于 2020-03-05 14:55:55
小记: 问题1 — RGB与BGR转换 问题2 — BGR灰度化 问题3 — 二值化 问题4 — 大津二值化算法 问题5 — RGB转HSV 一方面是考察图像的以上原理,一方面是考察numpy的使用。 参考: numpy库的基本使用 问题一:通道交换 读取图像,然后将 RGB \text{RGB} RGB 通道替换成 BGR \text{BGR} BGR 通道。 下面的代码用于提取图像的红色通道。 解析: 要把蓝色部分变成红色,而图中蓝色明显,说明B通道灰度值小,故而可以交换 B和R通道中的数值,这样B通道灰度值大,颜色变浅,B通道的灰度值变小,颜色变深,红色也就显现出来了。 import cv2 def BGR2RGB ( img ) : b = img [ : , : , 0 ] . copy ( ) g = img [ : , : , 1 ] r = img [ : , : , 2 ] img [ : , : , 0 ] = r img [ : , : , 1 ] = g img [ : , : , 2 ] = b return img img = cv2 . imread ( "imori.jpg" ) img = BGR2RGB ( img ) cv2 . imshow ( "result" , img ) cv2 . waitKey ( ) 问题二:灰度化

HSV颜色模型及颜色分量

佐手、 提交于 2020-03-01 19:18:37
HSV颜色模型 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。、这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。 色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°; 饱和度S:取值范围为0.0~1.0; 亮度V:取值范围为0.0(黑色)~1.0(白色)。 RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。 HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。 HSV颜色分量范围 一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。 H: 0— 180 S: 0— 255 V: 0— 255 此处把部分红色归为紫色范围: HSV六棱锥 H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红

颜色空间转换

烂漫一生 提交于 2020-02-07 00:11:11
1、转换颜色空间 HSV:色调(H),饱和度(S),明度(V)。 比如从 BGR 到灰度图,或者从BGR 到 HSV 等 我们要用到的函数是:cv2.cvtColor(input_image,flflag),其中 flflag 就是转换类型。 对于 BGR↔Gray 的转换,我们要使用的 flflag 就是 cv2.COLOR_BGR2GRAY。 同样对于 BGR↔HSV 的转换,我们用的 flflag 就是 cv2.COLOR_BGR2HSV。 你还可以通过下面的命令得到所有可用的 flflag。 import cv2 flags=[i for in dir(cv2) if i startswith('COLOR_')] print flags 注意:在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179], S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。但是不 同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软 件的 HSV 值进行对比时,一定要记得归一化。 2、物体跟踪 在 HSV 颜色空间中要比在 BGR 空间 中更容易表示一个特定颜色。 • 从视频中获取每一帧图像 • 将图像转换到 HSV 空间 • 设置 HSV 阈值到蓝色范围。 • 获取蓝色物体,当然我们还可以做其他任何我们想做的事

基于Python3.6的OpenCV图片色彩空间的转换

試著忘記壹切 提交于 2020-02-02 02:57:13
不同的色彩空间中对图片的色彩体现有很大不同 #色彩空间的相互转换:最常见的是HSV与RGB,YUV与RGB的相互转换 #常见色彩空间有: #RGB:最常用 #HSV:对指定色彩铭感,用于查找表达特定颜色 #HIS: #YCrCb:在人体肤色识别运用较多 #YUV:Android开发中运用较多 以下是对图片进行所有色彩空间的演示: import cv2 as cv ###导入openc包 def color_space_demo ( image ) : gray = cv.cvtColor ( image,cv.COLOR_BGR2GRAY ) cv.imshow ( "gray" ,gray ) hsv = cv.cvtColor ( image,cv.COLOR_BGR2HSV ) cv.imshow ( "hsv" ,hsv ) yuv = cv.cvtColor ( image,cv.COLOR_BGR2YUV ) cv.imshow ( "yuv" ,yuv ) Ycrcb = cv.cvtColor ( image,cv.COLOR_BGR2YCrCb ) cv.imshow ( "Ycrcb" ,Ycrcb ) HIS = cv.cvtColor ( image,cv.COLOR_BGR2HLS ) cv.imshow ( "HIS" ,HIS ) print ( "-

issue of the recognize people by their clothes color with not severe illumination environments

倾然丶 夕夏残阳落幕 提交于 2020-01-24 20:23:04
问题 I am interested in the human following using a real robot. I'd like to use the color of clothes as a key feature to identify the target person in front of the robot to follow him/ her but I am suffering due to it is a weak feature with a very simple illumination changing. So, I need to alter this algorithm to another or update values (RGB) online in real-time but I don't have enough experience with image processing. this is my full code for color detection: import cv2 import numpy as np from

让你的照片更鲜艳------hsv拉伸

半腔热情 提交于 2020-01-21 08:50:17
如果你的照片看上去灰蒙蒙的,缺少生机,那么hsv拉伸也许可以帮你的忙。hsv拉伸是一种可以提高图像鲜艳程度的图像增强方法,它能够让图像的颜色更加鲜活、艳丽,而且它的处理结果看上去很自然,比如源图中较暗的红色会变的鲜红,而不会像拉伸对比度那样把图像弄的难看失真,暗红色变的发紫发黑。 来个例子: 其基本原理如下: 1、 将源图像的(rgb)颜色空间映射到(hsv ), 什么是HSV? 2、 对图像的s和v通道进行一次min-max normalize,h通道不变 所谓min-max normalize是指: dst(x,y) = [src(x,y) – min(src(x,y)) ] / [ (max(src(x,y)) – min(src(x,y)) ] hsv拉伸处理后,图像不失真的关键因素就是h通道不变,即图像的色相与源图一致 3、 将新的(h s' v')映射回(rgb) 下面是gimp给出的源码(只贴出关键部分): 1 typedef struct { //用来存放最大最小值的结构体 2 double shi; 3 double slo; 4 double vhi; 5 double vlo; 6 } AutostretchData; 7 8 static void //找到最大最小值 9 find_max (guchar *src, gint bpp,