如何将RGB颜色转换为HSV?
如何使用c#? 将RGB颜色转换为HSV 我在不使用任何外部库的情况下搜索了快速方法. 解决方案 您是否考虑过简单地使用System.Drawing名称空间?例如: System.Drawing.Color color = System.Drawing.Color.FromArgb(red, green, blue); float hue = color.GetHue(); float saturation = color.GetSaturation(); float lightness = color.GetBrightness(); 请注意,这并不完全是您要要求的(请参阅 >并且颜色类没有从hsl/hsv进行转换,但是后者是合理的易于添加. 其他解决方案 请注意,Color.GetSaturation()和Color.GetBrightness()返回HSL值,而不是HSV. 以下代码演示了差异. Color original = Color.Fr
2 2024-04-10
编程技术问答社区
HorizontalScrollView以imageviews为子对象,在滚动时,屏幕中的图像中心应播放动画?
我是新的Android平台应用程序开发.我的问题是中心锁定图像而无需使用画廊视图,而我们弹奏动画的图像.在滚动动画图像时,应与屏幕中心进行调整.目前,我正在将Horizo​​ntalsCrollview与Linearlayout一起用作HSV的儿童Elment.线性布局具有多个图像.请给我建议,如何提前. 解决方案 继承了Horizo​​ntalsCrollview 并覆盖/添加方法 编辑 我的完整来源 public class HorizontalScrollSpinner extends HorizontalScrollView { private ListAdapter mAdapter; private int mCenterViewPosition = -1; private OnSelectedItemChanged onSelectedItemChanged = new OnSelectedItemChanged()
8 2024-02-11
编程技术问答社区
OpenCV的速度交通标志检测
我有一个问题,可以使用Android的OpenCV 2.4检测速度流量标志. 我做以下操作: "捕获框架 - >将其转换为HSV->提取红色区域 - >用椭圆检测检测标志" 到目前为止,只要图片质量良好,椭圆检测就可以完美. 但是,正如您在图片Bellow中看到的那样,由于我认为,由于相框的质量较差,因此红色的提取不正常. 将原始图像转换为HSV: Imgproc.cvtColor(this.source, this.source, Imgproc.COLOR_RGB2HSV, 3); 提取红色: Core.inRange(this.source, new Scalar(this.h,this.s,this.v), new Scalar(230,180,180), this.source); 所以我的问题是有另一种检测到这样的交通标志或从中提取红色区域的方法,顺便说一句,它可能像上一张图​​片一样非常微弱? 这是原始图像: 这将转换为HS
56 2024-01-29
编程技术问答社区
试图用opencv检测图像中的蓝色,得到了意外的结果
我是OpenCV4Android的新手.这是我写的一些代码,以检测图像中的蓝色斑点.在以下图像中,图像1在我的笔记本电脑中.我运行了应用程序和OpenCV摄像机捕获的框架是图像2.您可以查看代码以查看其余图像是什么. (如您在代码中看到的,所有图像都保存在SD卡中.) 我有以下问题:. 为什么在相机捕获的RGBA框架中变成浅蓝色斑点的颜色(如图2所示). 我在最大的蓝色斑点周围创建了一个boundingRect,然后通过执行rgbaFrame.submat(detectedBlobRoi).但是您可以在最后一个图像中看到,它看起来像几个灰色像素. 我期望蓝色球与图像的其余部分分开. 我想念什么或做错了什么? 代码: private void detectColoredBlob () { Highgui.imwrite("/mnt/sdcard/DCIM/rgbaFrame.jpg", rgbaFrame);//check
14 2024-01-29
编程技术问答社区
OpenCV安卓绿色检测
目前,我正在制作一个应用程序,用户将在其中检测绿色.我使用这张照片进行测试: 我的问题是我无法检测到任何绿色像素.在使用蓝色之前,一切都很好.现在,尽管我尝试了RGB的不同组合,但我无法检测到任何东西.我想知道这是绿色还是我的检测范围的问题,所以我使用(0, 255, 0)在油漆中制作了图像,并且它起作用.为什么它看不到这个圆圈?我使用此代码进行检测: Core.inRange(hsv_image, new Scalar([I change this value]), new Scalar(60, 255, 255), ultimate_blue); 可能是我设置了错误的范围,但是我使用photoshop获取绿色像素之一的颜色,然后将其转换为HSV的值.但是它行不通.它甚至无法检测到我采样的像素.怎么了?预先感谢. 使用Miki的答案: 解决方案 绿色是HSV空间H = 120,并且在范围内[0,360]. openCV将H值一半以适合[0,255],
24 2024-01-27
编程技术问答社区
如何比较两种颜色的相似性/差异性
我想设计一个可以帮助我评估5种预定义颜色之间的程序,一种颜色与可变颜色更相似,并且具有百分比.问题是我不知道该如何逐步手动做.因此,考虑程序更加困难. 更多详细信息:颜色来自带有凝胶的试管的照片,它们是不同的颜色.我有5个带有不同颜色的管,每个管都代表了5个级别中的1个.我想通过比较颜色来拍摄其他样品的照片,并在计算机评估该样品所属的哪个级别,我也想知道这一点近似值也一定比例.我想要一个这样做的程序: http://wwwww.colortools.net/color_matcher.matcher.html P> 如果您能告诉我要采取什么步骤,即使它们是我要思考和手动做的事情.这将非常有帮助. 解决方案 请参阅Wikipedia在颜色差中. 基本上,您想在某些多维色彩空间中计算一个距离度量. 但是RGB不是"感知均匀的" ,因此vadim建议的欧几里得RGB距离公制将与颜色之间的人类感知的距离不符.首先,L*a*b*旨在是一个感知均匀的色彩空间,并且通常使用三角洲
22 2024-01-22
编程技术问答社区
将 Obj-C RGBtoHSV() 函数翻译为 Swift。 min = MIN( r, MIN(g, b )); 等等
有人可以帮我这个功能吗?此功能在相机应用程序中,该应用程序使用过滤器算法来检测颜色变体等的差异等.语法对我来说非常困难.我不知道该如何处理参数,最小和最大变量语法,什么是delta等中的指针?有人可以为我翻译吗?非常感激. 我还应该和uicolor做某事吗?有人在下面提到.我不知道如何转换. // r,g,b values are from 0 to 1 // h = [0,360], s = [0,1], v = [0,1] // if s == 0, then h = -1 (undefined) void RGBtoHSV( float r, float g, float b, float *h, float *s, float *v ) { float min, max, delta; min = MIN( r, MIN(g, b )); max = MAX( r, MAX(g, b )); *v = max; delta = max - min; if( max
16 2023-11-03
编程技术问答社区
HSV颜色范围表
我正在开发一个应用程序,在该应用程序中,儿童需要在相机屏幕上使用某个目标点找到某些颜色 - 类似的增强现实. 我已经完成了整个过程,但是有RGB颜色. 对于每种颜色,红色,绿色,蓝色,黄色,紫色等.我一直在测试和定义RGB值的范围,以确定何时完全是哪种颜色.很多工作. 但是,我了解到使用HSV它的效果更好.但是我不想再次完成每种颜色设置范围的整个过程.但是我根本找不到在线任何地方,我已经谷歌搜索了两个小时! 所以我要搜索的内容非常简单: 对于大约8种标准颜色:红色,绿色,蓝色,黄色,紫色等 例如: 红色 - 色调在0到20之间,饱和度在0.8到1.0之间,值在0.8到1.0之间. (不确定这是正确的,只是一个例子) 我的意思是,有人一定已经在某个时候做了!? 解决方案 第一个数学定义的颜色空间之一是我发现的最接近的图表是在
40 2023-11-03
编程技术问答社区
使用scikit-image在HSV中进行颜色旋转
目的是将纯红色图像转换为色轮的任何色调. 首先将单色图像转换为RGB红色图像,例如: 然后转换为HSV 通过将角度值添加到 匹配轮子 然后将HSV图像返回转换为RGB颜色空间. 问题是只能获得绿色或蓝色的图像(n 在某些ipython单元中执行的代码依赖于scikit-image 0.10DEV: from skimage import io from skimage import color from scipy import ndimage as nd import numpy as np from matplotlib import pyplot as plt import os cy55 = io.imread('/home/jeanpat/MFISH/PSI/P07/01/Cy5/P070109C.tif') zero = np.zeros(cy55.shape,dtype=np.uint8) rgb0 = np.dstack([cy55, ze
40 2023-08-21
编程技术问答社区
rgb到numpy中的HSV
我正在尝试使用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 + 60 * (b - r) / (v - t + 1e-6) # v==b hb = 2
42 2023-08-11
编程技术问答社区
在安卓系统中,当有Hue时,查找颜色名称
我只关心12种颜色: red: RGB: 255, 0, 0 pink: RGB: 255, 192, 203 violet: RGB: 36, 10, 64 blue: RGB: 0, 0, 255 green: RGB: 0, 255, 0 yellow: RGB: 255, 255, 0 orange: RGB: 255, 104, 31 white: RGB: 255, 255, 255 black: RGB: 0, 0, 0 gray: RGB: 128, 128, 128 tea: RGB: 193, 186, 176 cream: RGB: 255, 253, 208 当我阅读位图的像素时,我可以获得色调值: int picw = mBitmap.getWidth(); int pich = mBitmap.getHeight(); int[] pix = new int[picw * pich]; float[] HSV = new
22 2023-08-11
编程技术问答社区
循环R、G、B值作为HUE?
我正在使用SFML,并且它具有在RGB中取值的颜色函数.示例..(255,0,0).我希望能够通过循环循环这些数字,以便以色调显示的颜色周期... 因此,如果我使用(76,204,63),则该功能将调整这3个数字.因此,我需要该功能来摄入RGB转换为HSV,然后返回RGB. 有什么想法我该怎么做? 我希望使用的SFML代码是... _sprite.setColor(76,204,63);这将把精灵设置为颜色...我试图弄清楚一旦使用这些数字完成的方式以循环颜色. 解决方案 有了一点谷歌搜索,我找到了 this 回答并将代码转换为C ++,并用SFML将SFML转换为SFML . 我的铸造非常糟糕,所以请随时使其变得更好.我想甚至应该可以替换3x3数组. sf::Uint8 clampAndConvert(float v) { if(v 255) return
28 2023-08-11
编程技术问答社区
自动检测已知情况的HSV值
我遇到这个堆栈溢出问题及其位置(以及骰子位置等). 我很感兴趣,因此使用他们提供的图片,我使用OpenCV和调整后的HSV值等,直到找到每种颜色的所有播放器零件 - 以及它们所在的位置(三角形).我有这个工作.但是,显然,这仅适用于此特定板上的特定颜色. 如果我们知道我们正在寻找大量的圆形播放两种不同的颜色和它们坐在的三角形(即3个侧面和圆形的多边形),您会建议什么方法,以便用户不必必须带有HSV值的小提琴来捡起零件(让我们开始说"一些"的准确性,而不是100%完美). 我从用户体验的角度思考,您认为我无法要求普通的Jo用h和s和v进行小提琴,直到一切设置为了自动检测到它似乎在某种程度上是必要的... 我认为,要求用户对已知的设置进行校准,例如板或其他东西的开始设置,然后询问它们是否正确 - 也许单击已错过的区域或其他东西. 我正在使用GOCV进行实施,但通常它是OpenCV的端口.但是,要测试这一点,我相信我无法在点击下直接访问颜色,因此我考虑使用SelectROI
26 2023-08-11
编程技术问答社区
用matlab/octave将图像从rgb转换为hsv再转换为rgb
我正在尝试将颜色图像从RGB转换为HSV(进行更改),然后返回RGB.作为一个测试,我制作了此代码只是为了测试如何从RGB到HSV回到RGB,但是当我查看图像时,它只是显示为黑色.我想念什么? *ps我使用的是八度的3.8.1 Here are the octave 3.8.1 packages I have loaded: >>> pkg list Package Name | Version | Installation directory --------------+---------+----------------------- control *| 2.6.2 | /usr/share/octave/packages/control-2.6.2 general *| 1.3.4 | /usr/share/octave/packages/general-1.3.4 geometry *| 1.7.0 | /usr/share/
154 2023-08-11
编程技术问答社区
来自UIImage的宝丽来过滤器
我正在尝试在iPhone中实现一些图像过滤器,例如宝丽来.我搜索了如何过滤现有的uiimage将其转换为double minRGB(double r, double g, double b){ if (r g){ if (r > b){ return r; }else { return b; } }else { if (g > b){ return g; }else { return b; } } } void rgbToHsv(double redIn,double greenIn,double blueIn,double *hue,double *saturation,double
16 2023-08-11
编程技术问答社区
通过PIL和colorsys将RGB转换成HSV
我编写了一个函数,该函数从RGB> HSV转换了图像.但是,当我保存新图像时,我唯一得到的就是黑色图像.我应该解决什么以解决? 任何帮助都将受到赞赏! 我的代码: def HSVColor(img): if isinstance(img,Image): r,g,b = img.split() Hdat = [] Sdat = [] Vdat = [] for rd,gn,bl in zip(r.getdata(),g.getdata(),b.getdata()) : h,s,v = colorsys.rgb_to_hsv(rd/255.,gn/255.,bl/255.) Hdat.append(int(h*255.)) Sdat.append(int(l*255.)) Vdat.appe
30 2023-08-11
编程技术问答社区
为什么灰度的工作方式是这样的?
我的原始问题 我阅读了将RGB像素转换为Greyscale RGB的阅读,应该使用 r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11 我还读到并理解,g的重量较高,因为人眼对绿色更敏感.实现这一点,我看到结果与从设置图像到诸如gimp. 在阅读本文之前,我想象要将像素转换为灰度,将其转换为HSL或HSV,然后将饱和度设置为零(因此,删除所有颜色).但是,当我这样做时,我的图像输出也完全不同,即使它也缺乏颜色. s = 0与我阅读的"正确"方式完全不同,为什么它'不正确'? 基于答案和其他研究的正在进行的发现 看来,要使用的亮度系数是某些争论的主题.各种组合和绿色算法的结果不同.以下是电视标准等区域中使用的一些预设: ITU-R BT.601(NTSC?)定义的系数是0.299r + 0.587g + 0.114b ITU-R BT.709(较新)定义的系数是0.2
20 2023-08-11
编程技术问答社区
我应该使用HSV/HSB还是RGB,为什么?
i必须检测包含其他血细胞的图像中的白细胞细胞,但是可以通过细胞的颜色来区分差异,白细胞具有更致密的紫色,可以在下面的图像中看到. . 我要使用RGB/HSV的哪种颜色?为什么?! 示例图像: 解决方案 通常,在做出这样的决策时,我只是快速绘制不同的频道和颜色空间,然后查看我的发现.从高质量的图像开始比从低质量开始并尝试使用大量处理 来修复它总是更好的 在这种特定情况下,我将使用HSV.但是与大多数颜色分割不同,我实际上将使用饱和通道来细分图像.细胞几乎是相同的色调,因此使用色调通道将非常困难. 色调(在全饱和和充分的亮度下)很难区分细胞 饱和巨大的对比 绿色频道,实际上也显示了很多对比度(令我惊讶) 红色和蓝色通道很难实际区分细胞. 现在,我们有两个候选人表示的饱和度或绿色频道,我们要求哪个更易于使用?由于任何HSV的工作都涉及我们转换RGB图像,因此我们可以将其予以解散,因此明确的选择是简单地将RGB图像的绿色频道用于分割.
20 2023-08-11
编程技术问答社区
在不使用java.awt.Color的情况下从HSV(Java中的HSB)转换为RGB(在Google App Engine上不允许)。
我认为我应该发布这个问题,即使我已经找到了解决方案,因为当我搜索它时,Java实现不容易可用. 使用HSV代替RGB可以产生具有相同饱和度和亮度的颜色(我想要的). Google App Engine不允许使用Java.awt.Color,因此在HSV和RGB之间进行以下操作不是一个选择: Color c = Color.getHSBColor(hue, saturation, value); String rgb = Integer.toHexString(c.getRGB()); 编辑:我如尼克·约翰逊(Nick Johnson)的评论中所述移动了答案. ex animo, - 亚历山大. 解决方案 我对颜色数学一无所知,但是我可以为代码提供此替代结构,这使我的美学意义挠痒痒,因为这对我来说很明显价值,t和p. (我也对长时间的if-else链有不合理的恐惧.) public static String hsvToRgb(float hue,
18 2023-08-11
编程技术问答社区