草庐IT

RGB转HSV

全部标签

c++ - 解包点云数据集中的 RGB 值

这是关于解压pcl文件中编码的rgb值。我使用pcl文档中描述的过程完成了此操作,但我得到的解压缩rgb值并不完全正确。当我用R绘制它们时,给出的表示与真实设置中的颜色不对应(我在某种程度上确定问题不在于用R绘制的方式)。例如,在所附图片中,划定的区域应为灰色和蓝色(两把椅子和一张table)。可以在以下位置找到源pcl文件:https://docs.google.com/open?id=0Bz5-HVcDiF6SanBZU0JWVmJwWHM和具有解压缩颜色值的文件位于:https://docs.google.com/open?id=0Bz5-HVcDiF6SV2pYQ0xUbTAw

c++ - 在opencv中从HSV中查找颜色

我需要使用OpenCV找到图像中最常出现的颜色。我提到了https://docs.opencv.org/2.4/modules/imgproc/doc/histograms.html?highlight=calchist当我运行该代码时,我得到的H-S直方图如下图所示。我如何从该直方图中分辨出最当前的颜色?有人可以告诉我如何使用HSV直方图获得图像中最当前的颜色吗?(我正在使用C++) 最佳答案 据我所知(opencv网站上的一个非常模糊的描述)这里我们在第一轴上有色相,在第二轴上有饱和度,颜色强度作为点亮度。色调从0(红色)到18

c++ - 使用 sse intrinsics 的 (A)RGB32 图像最快 50% 缩放

我想在C++中尽可能快地缩小图像。Thisarticle描述了如何有效地将32位rgb图像平均降低50%。它速度快,看起来不错。我尝试使用sse内在函数修改该方法。下面的代码在启用或不启用SSE的情况下都有效。然而,令人惊讶的是,加速可以忽略不计。任何人都可以找到改进SSE代码的方法吗?创建varsshuffle1和shuffle2的两条线似乎是候选者(使用一些巧妙的移位或类似方法)。/**Calculatestheaverageoftworgb32pixels.*/inlinestaticuint32_tavg(uint32_ta,uint32_tb){return(((a^b)&0

c++ - 为什么 unsigned char 用于 RGB 像素数据?

我正在使用一些基本的计算机图形学来学习C++。像素数据通常表示为:unsignedchar*pixelsunsignedchar很好,因为它是0到255之间的值(256=2^8因为char是2个字节,1个字节是8位?)。这很好,因为在RGB中,颜色用0到255之间的数字表示。但是..我将其理解为单色图像,在正常图像中我有RGB,我会有3个未签名字符数组,一个用于红色,一个用于绿色,一个用于蓝色。像这样的东西:unsignedchar*pixels[3]但我从来没有发现类似的RGB像素数据 最佳答案 RGB图像通常以交错顺序存储(R1

c++ - openCV 的 HSV 色轮图像?

我已经编写了直方图的代码,我想将其用于SVM训练。但根本问题是,我不明白我应该选择多少个最小bin数量,以便我可以在不同颜色(红色、绿色、黄色、蓝色、橙色)的bin中获得广泛不同的分布。那么,有人可以给我链接/张贴openCV的Hue色轮图像。我需要如下所示的东西,但其中的色调范围是0-360,我需要opencv使用的色轮(即0-180) 最佳答案 在opencv中,hsv图像必须适合3个8位channel,(S和V[0..255]没问题)。由于H在[0..360]范围内,实际值除以2,因此适合uchar。只需将上图中的任何值除以2

C++ 从 hBitmap 获取 RGB

使用位图对我来说是非常新的,所以我一直在努力阅读我阅读过的在线教程和策略。基本上我的目标是扫描屏幕以获得特定的RGB值。我相信执行此操作的步骤是在hBitmap中捕获屏幕,然后从中生成一个我可以扫描的RGB值数组。我最初是从GetPixel开始的,但速度很慢。解决方案是使用生成RGB值数组的GetDIBits。问题在于它返回的是奇怪且可能是随机的RGB值。我正在使用从另一个教程中找到的以下代码:/*Globals*/intScreenX=GetDeviceCaps(GetDC(0),HORZRES);intScreenY=GetDeviceCaps(GetDC(0),VERTRES);

c++ - SIMD : Why is the SSE RGB to YUV color conversion about the same speed as the c++ implementation?

我刚刚尝试优化RGB到YUV420转换器。使用查找表可以提高速度,就像使用定点算法一样。然而,我期待使用SSE指令获得真正的yield。我的第一次尝试导致代码变慢,并且在链接所有操作之后,它的速度与原始代码大致相同。我的实现是否有问题,或者SSE说明是否不适合手头的任务?部分原始代码如下:#defineRRGB24YUVCI2_000.299#defineRRGB24YUVCI2_010.587#defineRRGB24YUVCI2_020.114#defineRRGB24YUVCI2_10-0.147#defineRRGB24YUVCI2_11-0.289#defineRRGB24Y

c++ - 通过 GLSL 将 YV12 转换为 RGB 的问题

我正在尝试完成YV12到RGB的转换inthispost使用GLSL着色器。我的应用程序从磁盘加载原始YV12帧并尝试使用GLSL着色器执行转换。但是,生成的图像垂直翻转并且存在一些颜色问题。我认为问题可能是图像被读取为char数组(1字节),然后转换为GLushort数组(2字节)。你怎么看?这是原始YUV帧的样子:andtherawframeloadedbytheapplicationcanbedownloadedfromhere.这是我得到的输出:我在下面分享应用程序的源代码:#include#include#include#include#include#include#inc

c++ - OpenCV 如何输入 RGB 图像

如何使用函数cv::imwrite()编写RGB图像?到目前为止,我所有的尝试都导致编写了一个BGR图像。我的矩阵对象是一个cv::Mat。 最佳答案 如果输入的cv::Mat是BGR顺序,则cv::imwrite()函数可以正确写入图像文件(如果您让OpenCV创造它)。如果您自己创建图像,则必须先转换颜色顺序,例如按照bambomovecv::cvtColor(in,out,CV_RGB2BGR);的建议调用如果您创建了RGB图像.(注意颜色转换代码,和竹子的略有不同。) 关于c++

c++ - 如何更改 pcl::PointXYZRGBA 的 RGB 值?

我有一个pcl::PointXYZRGBA类型的点。如何分配/更改其rgb值?要更改xyz坐标,我可以简单地执行point.x=some_value。 最佳答案 或者只是使用point.r=255;point.b=0;point.g=0;point.a=255; 关于c++-如何更改pcl::PointXYZRGBA的RGB值?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15