问题标签 [bgr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4733 浏览

c# - 使用 EmguCV 进行 BGR 直方图比较

我正在尝试根据直方图的相似性进行某种图像排名。我拍摄了一张图像,需要将其直方图与图像数据库进行比较,根据与源图像的相似程度对它们进行排序。这应该像过滤器一样工作,获取具有最相似图像的子组,然后将它们与其他更准确且计算成本更高的方法(模式匹配、SURF 等)进行比较。

这背后的想法是,例如,一些图像有很多蓝色,而在库中有 6 个图像有很多蓝色,所以它会将这些图像排名更高。其他图像有很多黄色(蓝色和绿色)......

此时我的代码是这样的:

我可以比较每个颜色直方图,但不知道如何合并这些比较以获得单个值。女巫(cBlue + cGreen + cRed) / 3.0我没有得到好的结果。

我读了一种方法来做到这一点是地球移动距离(EMD)。EmguCV 有一个名为 的函数cvCalcEMD2,但我不知道如何使用它(参数是什么意思),也找不到它的用法示例。

0 投票
1 回答
3126 浏览

android - 移动设备上的 YUV (NV21) 到 BGR 转换(本机代码)

我正在开发一个在 Android 和 IOS 上运行的移动应用程序。它能够实时处理视频流。在 Android 上,我通过 android.hardware.Camera.PreviewCallback.onPreviewFrame 获得相机的 Preview-Videostream。我决定使用 NV21 格式,因为所有 Android 设备都应该支持它,而 RGB 不支持(或者只是 RGB565)。

对于我的算法(主要用于模式识别),我需要灰度图像以及颜色信息。灰度不是问题,但从 NV21 到 BGR 的颜色转换耗时太长。

如上所述,我使用以下方法捕获图像;

在应用程序中,我覆盖了相机的 onPreviewFrame-Handler。这是在 CameraPreviewFrameHandler.java 中完成的:

然后 onFrame-Function 调用一个本地函数,该函数从 Java 对象中获取数据作为本地引用。然后将其转换为 unsigned char* 字节流并调用以下 c++ 函数,该函数使用 OpenCV 从 NV21 转换为 BGR:

正如人们可能从代码中的注释中得出的结论一样,我已经对转换进行了分析,结果证明在我的 Nexus 4 上它需要大约 30 毫秒,对于这样一个“微不足道”的预处理步骤来说,这是不可接受的。(我的分析方法经过双重检查并且可以正常工作以进行实时测量)

现在我正在拼命地寻找从 NV21 到 BGR 的颜色转换的更快实现。这是我已经做过的;

  1. 采用本主题提供的代码“convertYUV420_NV21toRGB8888”到C++ (转换时间的倍数)
  2. 将代码从 1 修改为仅使用整数运算(openCV-Solution 的转换时间加倍)
  3. 浏览了其他几个实现,都具有相似的转换时间
  4. 检查 OpenCV-Implementation,他们使用大量位移来获得性能。猜我自己不能做得更好

您是否有建议/知道好的实现,甚至有完全不同的方法来解决这个问题?我不知何故需要从 Android 相机捕获 RGB/BGR 帧,它应该可以在尽可能多的 Android 设备上工作。

感谢您的回复!

0 投票
1 回答
822 浏览

opencv - 在不使用 split() 函数的情况下拆分 BGR 矩阵

我正在使用 2.4.6 版本的 Visual Studio 2012 和 Opencv 库进行编程。

有人可以帮我将 BGR 图像拆分为三个图像,每个通道一个?

我知道OpenCV中有split函数,但是它导致我一个未处理的异常,可能是因为我有一个带有32位库的64位处理器,或者可能是库的版本,所以我想知道如何迭代在不使用 split() 的 BGR 矩阵的像素值上。

提前致谢。

0 投票
2 回答
6591 浏览

ios - 使用 YUV 颜色空间将 CMSampleBufferRef 转换为 UIImage?

我正在使用AVCaptureVideoDataOutput并希望转换CMSampleBufferRefUIImage. 很多答案都是一样的,比如这个从 CMSampleBufferRef 创建的 UIImage 没有显示在 UIImageView 中?具有多个预览的 AVCaptureSession

如果我将 VideoDataOutput 颜色空间设置为 BGRA,它工作正常(归功于此答案CGBitmapContextCreateImage 错误

如果没有上述 videoSettings,我将收到以下错误

使用 BGRA 不是一个好的选择,因为从 YUV(默认 AVCaptureSession 颜色空间)到 BGRA 存在转换开销,正如 Brad 和 Codo 在How to get the Y component from CMSampleBuffer from the AVCaptureSession 中所述?

那么有没有办法转换CMSampleBufferRefUIImage使用 YUV 颜色空间?

0 投票
1 回答
303 浏览

c - 使用英特尔 IPP 镜像 BGR(24 位)图像

我正在尝试使用以下代码镜像原始(无图像标题)BGR 图像,每像素 8 位:

图像尺寸为 640x360。pitch_s = pitch_d = width = 640。可能是什么问题?

0 投票
1 回答
794 浏览

c - winapi - 24bpp 中的 CreateDIBitmap 是 BGR 而不是 RGB

我正在尝试从包含像素颜色值的数组创建一个 HBITMAP。问题是当我尝试创建 24-bpp 位图时,CreateDIBItmap 使用 BGR 值而不是 RGB,正如我所愿。

创建Bitmap的代码如下:

这应该为所有图像创建一个红色背景,但它是蓝色的。

0 投票
3 回答
22560 浏览

java - 如何知道图像是 RGB 还是 BGR 格式?

有什么方法可以提前知道用作系统输入的图像是 RGB 还是 BGR 格式?

我正在使用带有 java API 的 OpenCV,我想将输入图像转换为灰度或 L*a*b* 颜色空间,但在 OpenCV 中,您必须首先指定要转换的图像是 RGB 还是 BGR。

我使用的图像类型是.jpg.png

0 投票
1 回答
1360 浏览

ios - iOS:OpenCV 红色范围

我正在尝试使用 OpenCV 库在图片中圈出红色。我在谷歌看到了很多问题,但没有人帮助我。我的代码如下:

问题:如果图片中只有红色和白色,则此代码完美运行,它成功包围了红色。但是,如果涉及多种颜色,特别是深色,则颜色检测将失败。我需要只检测红色的精确范围。谢谢

0 投票
1 回答
1541 浏览

java - 字节值的平均值

我正在尝试创建图像的(平均)灰度,但我似乎没有得到每个像素的值。我想我在总结平均值时没有做正确的计算,但我找不到哪里出了问题。

我在类型转换中遗漏了什么吗?

编辑:

输入如下,其中 byte[] 数据是来自 BufferedImage 的原始数据,在这种情况下它没有 alphaRaster。

0 投票
3 回答
7921 浏览

c++ - 是否有一个公式来确定给定 BGR 值的整体颜色?(OpenCV 和 C++)

我正在使用 C++ 和 OpenCV 制作一个函数,它将检测图像中像素的颜色,确定它所在的颜色范围,并将其替换为通用颜色。例如,绿色的范围可以从深绿色到浅绿色,程序会确定它仍然是绿色并将其替换为简单的绿色,从而使输出图像看起来非常简单。一切都设置好了,但是我在定义每个范围的特征时遇到了麻烦,并且很好奇是否有人知道或者有一个公式,给定 BGR 值,可以确定像素的整体颜色。如果不是,我将不得不做很多实验并自己制作,但如果已经存在某些东西,那将节省时间。我做了很多研究,到目前为止还没有发现任何东西。