- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,代码有效,但我想了解它是如何工作的(每一行)。
这是我的插值代码:
void colortemp(float temp, FILE* tempfile)
{
//float temp_min = -138.0;
//float temp_max = -37.0;
//float color_min = 240.0;
//float color_max = 0;
if(temp < 135.0f)
{
temp = 135.0f;
}
/*
if(temp > 310.0f)
{
temp = 310.0f;
}*/
float a = ( 0.0f - 240.0f) / ( 310.0f - 135.0f);
float b = 240.0f - (a * 135.0f);
float h = (temp * a ) + b;
float S = 1.0f, V = 1.0f; //HSV
float P, Q, T, fract;
unsigned char pix[3];
(h == 360.0f)?(h = 0.0f):(h /= 60.0f); --> WHY DIVIDE BY 60, NO MODULO ?
fract = h - floor(h);
P = (V*(1. - S))*255;
Q = (V*(1. - S*fract))*255;
T = (V*(1. - S*(1. - fract)))*255;
V*=255;
S*=255;
if (0. <= h && h < 1.) //WHY WE USE BETWEEN TWO VALUES AND NOT EQUALS TO 1 FOR EXAMPLE
{
pix[0] = (int)V;
pix[1] = (int)T;
pix[2] = (int)P;
}
else if (1. <= h && h < 2.)
{
pix[0] = (int)Q;
pix[1] = (int)V;
pix[2] = (int)P;
}
else if (2. <= h && h < 3.)
{
pix[0] = (int)P;
pix[1] = (int)V;
pix[2] = (int)T;
}
else if (3. <= h && h < 4.)
{
pix[0] = (int)P;
pix[1] = (int)Q;
pix[2] = (int)V;
}
else if (4. <= h && h < 5.)
{
pix[0] = (int)T;
pix[1] = (int)P;
pix[2] = (int)V;
}
else if (5. <= h && h < 6.)
{
pix[0] = (int)V;
pix[1] = (int)P;
pix[2] = (int)Q;
}
else
{
pix[0] = 153;
pix[1] = 20;
pix[2] = 0;
}
fwrite(pix,1,3,tempfile);
}
我从某人那里获取了代码
posted on Stack Overflow并编辑它。但我不明白代码中的所有内容。
fract = h - floor(h)
而不是
fract = h - (floor(h) mod 6)
如果我们继续,我们会看到 3 个变量(在维基百科的算法中)l、m 和 n。这些是临时变量,但我们如何找到可以为我们提供这些变量结果的公式?
最佳答案
HSV 中的 h 是 0-359 度的角度。 HSV 到 RGB 变换基于 60 度扇区 h 在 6 个单独的部分中定义:h 在 0-59 之间以一种方式定义,h 在 60-119 之间以另一种方式定义,h 在 120-179 之间它定义了第三种方式,依此类推。
因此,该过程的第一步是找出我们所在的扇区。一种方法是将 h 除以 60,得到 0 到 6(不包括)之间的值。取这个数字的下限会给出一个整数 0-5,它告诉你扇区。
如果 h 不在 0-359 之间怎么办,那么您如何确定扇区?维基百科文章考虑到了这一点:这是您需要模运算符的地方。 C++ 程序不处理这种情况:它假定 h 已经在正确的范围内。
If we continue we see 3 variables (in the algorithm in Wikipedia) l, m and n. These are temporary variables but how do we find the formulas that will give us the results of these variables?
And finally in my code the RGB is found if we are between two values and in the algorithm it's found if it is EQUAL to the value. Why is there a difference?
关于c++ - HSV 到 RGB 的转换公式是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63307612/
我必须使用 opencv 开发 android 代码,代码相当于 MATLAB。因为我必须读取图像并将其转换为 HSV,我已经使用: Imgproc.cvtColor(temp, hsv , Im
我正在寻找从 RGB 到 HSV 的颜色空间转换器,特别是用于两种颜色空间的 0 到 255 范围。 最佳答案 我已经使用了很长时间 - 现在不知道它们是从哪里来的......请注意,输入和输出,除了
我正在使用 openCV 3.1.0(我试过 2.4.9,但有同样的问题)。我想将 HSV 垫输出到 jpeg: // .. Getting JPEG content into memory // J
我有这段代码可以将 RGB 转换为 HSV func rgbToHSV (_ r:Double, _ g:Double, _ b:Double) -> (Double, Double, Doubl
我不熟悉图像检测技术。我正在使用 java openCV 来检测图像中的颜色。我能够检测到黄色和红色。我从命中和试用方法中获得了值(value),这些方法工作正常。但我还想从下面的手图像中检测绿色、橙
我正在开发一款应用程序, children 需要在其中使用相机屏幕上的特定目标点来找到特定的颜色 - 有点像增强现实。我已经完成了所有工作,但使用了 RGB 颜色。对于每种颜色,红色、绿色、蓝色、黄色
我有一个将 RGB 颜色空间中的 vector 转换为 HSV 的函数 - 该例程通过了所有测试并且在绝大多数时间都有效。然而,崩溃报告表明它偶尔会失败(0.0001% 的调用或更少)。但是,由于此函
我正在开发一个应用程序,该应用程序创建的图像的色调、饱和度和值会根据不同的参数发生变化。出于性能原因,最好分别渲染色调、饱和度和值组件,然后使用 Photoshop 风格的混合模式(乘法、叠加、屏幕、
我正在使用 matplotlib 中的 HSV 颜色图来绘制一些向量场。有没有办法使 HSV 颜色变暗或变得更平滑,使它们看起来更像这样 比我原来的绘图颜色太亮: 最佳答案 简介 假设您正在尝试绘制这
我正在尝试遍历 HSV 图像,但它一直在崩溃。 Mat a=imread("play.jpg"); Mat hsvimage, hsvimage2,cont; cvtColor(a,
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭10 年前。 Improve th
我听说,如果您需要在软件上进行颜色分割(如果满足某些阈值规则,例如 R100、10<,则通过将像素设置为 1,从彩色图像创建二进制图像) B < 123) 最好先将图像转换为 HSV。这是真的吗?为什
我正在 win32 api 中创建一个应用程序,它将使用进度条。这个进度条应该改变它的颜色。从红色(左端)到绿色(右端),中间有一些黄色。 我搜索了一下,发现我应该使用 HSV 来实现这一点。我就是不
虽然我通常更喜欢 RGB 颜色空间而不是 HSV,但我希望 SKEmitterNode 发射具有最大饱和度和值的粒子,并且具有涵盖所有颜色的色调值。这可能吗? 我是 XCode、Swift 和 Spr
假设我有两种 RGB 颜色 (255,0,0) 和 (0,0,255),我还需要它们之间的 100 种颜色。我如何根据许多所需步骤生成 HSV 颜色值列表? 当前使用 python 3 我创建了以下代
我正在从如下图像创建一个 hsv 直方图。 - (void)processImageWithHsv:(Mat&)image; { Mat image_hsv; cvtColor(ima
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在寻找一种为 3 channel 矩阵的元素赋值的有效方法。特别是,我需要将 HSV 值分配给 2D cv::Mat 的元素,其初始化如下: cv::Mat clusterImage(height
我正在尝试使用 openCV 和 C++ 来均衡 HSV 图像的直方图。我知道有些带有 openCV 的库可以为我执行此操作,但我想手动尝试以了解该方法。 我假设均衡将在 HSV 图像的 V chan
所以我一直在尝试使用 HSV 在一定程度范围内循环颜色,但我似乎无法在颜色之间平滑过渡。理想情况下,我希望能够在特定的度数范围 (80-140) 内移动,并在 0.5 - 1 之间循环饱和度和值。老实
我是一名优秀的程序员,十分优秀!