我当前忙于WebGL中的延期阴影,我需要将3个整数值(在[0..256] = 256^3)中解码为单个32位float并稍后对其进行编码.因为这是针对WebGL的,因此必须无需刻度操作即可完成.精度对我来说并不重要(但我认为可以实现). 这是我拥有的,但我认为这是错误的,因为我存储编码值的纹理的精度. float packColor(vec3 color) { return (color.r + (color.g*256.) + (color.b*256.*256.)) / (256.*256.*256.); } vec3 decodeColor(float f) { float b = floor(f * 256.0); float g = floor(f * 65536.0) - (b*256.); float r = (floor(f * 16777216.0) - (b*65536.)) - (g*256.); return vec3(r, g, b)/ 25
以下是关于 rgb 的编程技术问答
我正在尝试使用SDL加载PNG图像,但该程序不起作用,并且此错误出现在控制台 中 libpng警告:ICCP:已知不正确的srgb profile 为什么会出现此警告?我该怎么办来解决这个问题? 解决方案 一些应用程序将警告视为错误;如果您使用的是这样的应用程序,则必须删除块.您可以使用各种PNG编辑器来做到这一点,例如 ImageMagick . 使用 Windows CMD提示,您将需要cd(更改目录)到文件夹中,然后使用您要关注的图像,然后才能使用下面列出的命令. libpng-1.6比以前的版本更为严格.您可以忽略警告.要摆脱它,请从PNG图像中删除ICCP块. convert in.png out.png 要从文件夹中的所有PNG文件(目录)中删除无效的ICCP块,您可以从ImageMagick使用mogrify: mogrify *.png 这要求您的ImageMagick使用libpng16构建.您可以通过运行来轻松检查
我正在MATLAB中进行数据分析,并且我有来自三个不同类别的数据点:(无损害,损坏小和高伤害).这些类由整数值(1、2、3)表示. 我正在使用正规化的线性回归来预测这些类,并且我想创建一个图片,其中我的数据点以颜色突出显示:1 =绿色,2 =黄色,3 =红色.这对我来说没问题,但是我也想创建次要图片,我在其中用回归模型预测了这些类.问题在于我的回归模型没有给出整数值,而是真实的值(我可以通过将值舍入到最近的整数来克服,但我不想;)) 我想做的是:将真实值(例如1.45)映射到RGB代码中,该值与绿色范围内的颜色相对应 - 黄色 - 红色. 让我举一个例子: 如果我的模型的预测值为1.45,则相应的颜色代码将介于绿色 - 黄色之间. 如果我的预测值为2.5,则颜色代码将介于黄色 - 红色之间. 因此,值越接近1,颜色代码越接近绿色,值越接近2,颜色代码越接近黄色,越接近颜色,值越接近3,颜色越近,颜色越近代码为红色. 我只想在我的预测图片中像希腊,
大家好.我目前正在玩YUV文件.您对如何从YUV视频中提取y,u,v组件有什么建议? i 找到 a % function mov = loadFileYuv(fileName, width, height, idxFrame) function [mov,imgRgb] = loadFileYuv(fileName, width, height, idxFrame) % load RGB movie [0, 255] from YUV 4:2:0 file fileId = fopen(fileName, 'r'); subSampleMat = [1, 1; 1, 1]; nrFrame = length(idxFrame); for f = 1 : 1 : nrFrame % search fileId position sizeFrame = 1.5 * width * height; fseek(fileId, (idxFrame(f) - 1) * sizeFrame, 'bo
我有一个3D矩阵,其尺寸为600x600x28,最后一个索引是帧数,并希望将其转换为视频文件.如下所示,我在下面的代码中看到,将数组转换为4D矩阵,大小为600X600X3X28,以使其与WriteVideo格式兼容.但是我不确定为什么输出视频为空! Orig = randi([1 1000],600,600,28); x = uint8(255 * mat2gray(Orig)); map=jet; for i=1:size(x,3) x_all(:,:,:,i) = ind2rgb(x(:,:,i),map); end x_all = uint8(x_all); v = VideoWriter('myvideo'); open(v); writeVideo(v,x_all); close(v) 解决方案 您不必将视频转换为RGB,您可以创建灰度视频. 示例: x = randi([0, 255], 600, 600, 28, 'uint8'); v =
我使用此调用将文件转换为png格式: ffmpeg.exe -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s x -i infile -f image2 -vcodec png out.png 与FFmpeg不同,我想使用可以链接或编译为封闭式商业产品的转换器,因此我需要了解要传递的输入文件的格式. 那么,rawvideo对FFmpeg的含义是什么? 是FFmpeg确定输入文件具有哪种类型的原始格式,或者rawvideo表示某些不同的内容? rgb32在这里意味着什么? 输入文件的大小比(width * height * 8)字节多一点. 解决方案 通常,视频文件包含视频流(使用-vcodec指定其格式),嵌入在媒体容器中(例如MP4,MKV,WAV等). -f选项用于指定容器格式. -f rawvideo基本上是一个虚拟设置,告诉FFMPEG您的视频
我正在尝试将两个源RGB向量混合在一起,以创建第三个"结果向量",这是前两个的直观组合. 理想情况下,我能够模仿"真正的油漆混合特性",但是为简单起见,我试图找到一种方法,使结果看起来像您从结合两个源RGB中获得的东西. 最少,这些特征: 红色 +黑色=深红色 红色 +白色=浅红色 最佳地,具有真实的油漆特征: 红色 +蓝色=紫色 红色 +黄色=橙色 (etc) - 我目前正在通过添加两个源RGB向量/255,然后归一化(并乘以255)来做到这一点. 因此,使用此信息:[red = * 255] + [blue = * 255]给出洋红= >/sqrt(2) * 255,尽管其他颜色不太直观甚至可见...我需要一种更好的方法!请帮助: - ) 解决方案 您建议的是与加权平均值相同的? Average R = w1*R1 + w2*R2 + w3*R3 + ... + wn*Rn Average G = w1*G1 + w2*G2 + w
我在Excel 2007中有一个宏创建 ,该值使一个值取决于源文件的字体颜色,如下所示(此代码是循环的一部分): If Worksheets("Source1").Cells(i, j).Font.Color = RGB(165, 165, 165) Or Worksheets("Source1").Cells(i, j).Font.Color = RGB(117, 146, 60) Then Worksheets("Result").Cells(UnusedRow, 15).Value = "Closed" Else Worksheets("Result").Cells(UnusedRow, 15).Value = "Active" End If 这无问题. 然而,奇怪的是,相同源文件中的相同单元源文件在使用excel 2013 打开时具有不同的rgb值:rgb(165,165, 165,165)2007年成为2013年的RGB(166,166
此功能是一个示例.请注意,RGB值实际上是BGR值. excel为什么这样做? Function GetRGB(ByVal cell As Range) As String Dim R As String, G As String Dim b As String, hexColor As String hexCode = Hex(cell.Interior.Color) 'Note the order excel uses for hex is BGR. b = Val("&H" & Mid(hexCode, 1, 2)) G = Val("&H" & Mid(hexCode, 3, 2)) R = Val("&H" & Mid(hexCode, 5, 2)) GetRGB = R & ":" & G & ":" & b End Function 解决方案 Excel RGB值不是向后的,实际上是Excel或更广泛的意义上,Windows使用BGR颜
i有一个包含RGB值的列,例如: 127,187,199 67,22,94 在Excel中,有什么方法可以使用它来设置单元格的背景颜色? 解决方案 您可以使用VBA- 之类的东西 Range("A1:A6").Interior.Color = RGB(127,187,199) 只需传递单元格值. 其他解决方案 仅设置颜色属性将确保完全匹配. Excel 2003一次只能处理56种颜色.好消息是,您可以将任何RGB值分配给那56个插槽(称为ColorIndexs).当您使用颜色属性设置单元格的颜色时,这会导致Excel使用最近的" ColorIndex".示例:将单元格设置为RGB 10,20,50(或3281930)实际上会导致将其设置为颜色指数56,即51,51,51(或3355443). 如果您想确保获得确切的匹配,则需要将colorIndex更改为所需的RGB值,然后更改单元格的色素为上述值.但是,您应该意识到,通过更改颜色索引的值,您可以更
我试图将单元格的背景颜色逐步更改为黑色,我发现范围内部.Color方法返回了一个看似任意的长长.查看MSDN上的文档,这个数字所代表的内容几乎没有.是否有一种方法可以从这个长期返回RGB值.我有效地需要RGB(红色,绿色,蓝色)功能的相反. 解决方案 简短答案: 没有内在功能.您必须写自己的功能. 长答案: 从内部返回的长度.彩色属性是典型的六边性数字的小数转换,我们曾经用来在HTML中看到颜色,例如" 66ff66".另外,可以将常数Xlnone(-4142)传递给将单元设置为在背景中没有颜色,但是从Get属性中标记了此类单元.知道这一点,我们可以编写一个返回一个或全部适当的RGB值的函数. 幸运的是,艾伦·怀亚特(Allan Wyatt)先生在这里做到了! 其他解决方案 "任意"数字是RGB值(B 256^2 + g 256 + r)的数学组合,并且将十六进制颜色值转换为十进制数(基础16至基础10),具体取决于您想查看的方式.只是不同的基础.
'ofd是打开文件对话框 Dim img As Bitmap Dim iscmyk As Boolean Dim i As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ofd.Filter = "Jpg Image(*.jpg)|*.jpg" If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then img = Bitmap.FromFile(ofd.FileName) iscmyk = ((DirectCast(img.Flags, Imaging.ImageFlags) And Imaging.ImageFlags.ColorSpaceCmyk) = Imaging.ImageFlags.Co
我正在使用以下代码从图像中提取RGB值,有时这有效,但是在某些文件上(似乎在位于位图的宽度上不可分解的是,它都返回混合值: Dim rect As New Rectangle(0, 0, bmp.Width, bmp.Height) Dim bmpData As System.Drawing.Imaging.BitmapData = bmp.LockBits(rect, Imaging.ImageLockMode.ReadOnly, Imaging.PixelFormat.Format24bppRgb) Dim ptr As IntPtr = bmpData.Scan0 Dim cols As New List(Of Color) Dim bytes As Integer = Math.Abs(bmpData.Stride) * bmp.Height Dim rgbValues(bytes - 1) As Byte System.Runtime.InteropServices.Ma
我读了这篇文章 algorithm在RGB和HSB颜色值之间切换 Type RGBColor Red As Byte Green As Byte Blue As Byte End Type Type HSBColor Hue As Double Saturation As Double Brightness As Double End Type Function RGBToHSB(rgb As RGBColor) As HSBColor Dim minRGB, maxRGB, Delta As Double Dim h, s, b As Double h = 0 minRGB = Min(Min(rgb.Red, rgb.Green), rgb.Blue) maxRGB = Max(Max(rgb.Red, rgb.Green), rgb.Blue) Delt
我想允许用户通过文本框中输入RGB颜色,并传递该变量以更改所有形状的颜色.我写了一个循环,它将查看形状名称的最后两个字符,以确定应该将其更改为主要或次要颜色. 这是最新办公室365的PowerPoint. 我尝试了以下代码.我得到类型不匹配或无效的参数错误: Dim osld As Slide Dim oshp As Shape Dim strMainColor As String, strSecondColor As String 'Set main color to default if users didn't enter a RGB value If MainColor.Value = "" Then strMainColor = "73, 109, 164" Else strMainColor = MainColor.Value 'Set Secondary color to default if users didn't enter a RGB valu
如何将变量值存储在RGB()中? 我使用此不起作用的代码: var R=200; var colval="rgb(R,10,100)"; 我希望它像这样: var colval="rgb(200,10,100)"; ,但不知何故它不正确存储r,引号约为200或r也无法正常工作. 解决方案 我假设您正在使用JavaScript: var R = 200; var colval = "rgb(" + R + ",10,100)"; 导致colval = rgb(200,10,100) 其他解决方案 使用"+",因为在JavaScript中,是用于连接的操作员,或将其添加在一起以制作字符串.在这种情况下,我们将" rgb(" + r +"," + g +"," + b +")添加在一起,以制作一个看起来像" RGB(22
此代码对我(Swift 2操场)的灰度工作,加载颜色.bmp图像... 将pixel数据作为阵列从uiimage/cgimage/cgimage中获取在Swift 中 ...但是,如果我将bytesPerPixel更改为3(或4)并使用 let colorSpace = CGColorSpaceCreateDeviceRGB() ...代码仍然没有错误,但是像素值都是零.关于如何解决该问题的任何建议? 解决方案 您可能忘记了cgimagealphainfo参数.对于颜色图像,如果您假设bytesPerPixel为4,则需要在创建上下文时设置RGBA(或ARGB).以下是没有Alpha通道的RGBA的示例. // RGBA format let ctx = CGBitmapContextCreate(&data, pixelsWide, pixelsHigh, 8, bitmapBytesPerRow, colorSpace, CGImage
我一直在为此挣扎了几个小时,我希望别人有洞察力.我正在寻找一种获得1x1 uiimage的平均RGB颜色的方法.到目前为止,我已经从UIImage创建了一个CgimageRef,但是我对Coregraphics确实是新手,所以我不确定从那里去哪里.任何帮助都将受到赞赏.谢谢! 解决方案 如果您有CGIMAGE,则通过调用 获得数据 CGDataProviderRef CGImageGetDataProvider ( CGImageRef image ); cgimage doc /p> 然后您可以复制数据 CFDataRef CGDataProviderCopyData( CGDataProviderRef provider ); /p> 因为CFData与NSData相同,您可以施放并检索字节 - (const void *)bytes cfdata doc /p> 在/a> 现在您有了原始字节,可以对它们做任何事情,使用
有人可以将我指向正确的方向,而距离颜色检测到距离?我已经使用了下面的代码,如果对象或兴趣点不到10英尺,它可以正确捕获图像的RBG值.当对象处于距离时,代码返回错误的值.我想在大于10英尺的距离上拍摄对象的照片,并检测到该图像的颜色. //On the top of your swift extension UIImage { func getPixelColor(pos: CGPoint) -> UIColor { let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage)) let data: UnsafePointer = CFDataGetBytePtr(pixelData) let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x))