问题标签 [pixelformat]

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 投票
1 回答
318 浏览

javafx - 在 JavaFX 中渲染 YUV

我需要以最小的延迟在 JavaFX 中渲染一个 yuyv422 流。如果我将它转换为 RGB,我可以使用带有 WritableImage 和 PixelFormat 实例的 ImageView,它可以工作,但是 RGB 转换会消耗大量 CPU,特别是在高分辨率下。我看到了这个确切的功能请求

https://bugs.openjdk.java.net/browse/JDK-8091933

但似乎它不会在 Java 9 中实现。如果是这样,我想知道它是否不会引入延迟或需要太多的 CPU。还有另一种使用JavaFX的方法吗?

0 投票
1 回答
631 浏览

rendering - SDL2:渲染纹理 YUV 和 RGB

是否可以同时渲染具有不同像素格式(YUV420 和 RGB444)的纹理?下面是同一张图片的两个纹理的叠加(小图已经掉色了):

在此处输入图像描述

0 投票
0 回答
6919 浏览

ffmpeg - ffmpeg:指定/强制输入 H.264 视频的像素格式

我有一些 MP4 视频文件在其标题信息中缺少像素格式。我已经尝试将其设置为最大值 2147483647,但这并没有帮助probesizeanalyzeduration

所以我知道这些视频可能已损坏,但如果这是唯一缺少的信息,我想我可以通过重建它们的标题信息或通过强制像素格式以某种方式解码它们来恢复它们。有谁知道这是否可能?该文件的更多背景信息:

媒体信息:

ff探针:

我不能以这种方式在 ffmpeg 上强制使用 pixel_format:

有没有其他方法可以用 ffmpeg 完成这个?是否可以编辑其标题信息以包含像素格式信息?

0 投票
0 回答
399 浏览

c++ - 在 Visual Studio C++ 中使用 OpenCV 合并 GigE 相机

如何从 Visual Studio 2012 中 Windows 上运行的 C++ 程序控制 2x2 和 4x4 相机上的水平和垂直分箱?

0 投票
0 回答
1488 浏览

delphi - 如何创建具有特定像素格式的 FMX.Graphics.TBitmap?

可能我遗漏了一些东西,但我找不到创建具有特定像素格式的 FMX 位图的方法。更具体地说,我需要FMX.Graphics.TBitmap使用像素格式创建BGR_565。构造函数没有定义 PixelFormat 的选项。该属性PixelFormat是只读的(与 VCL 版本不同TBitmap)。

0 投票
0 回答
506 浏览

android - 将图像类从 RGBX_8888 转换为 RGBA_8888 或从 RGBX_8888 获取 rgb 值

我开发了截取其他应用程序的应用程序。

当我使用 android 设备开发它时,下面的代码可以工作。

但该代码在 android app player for pc(momo app player)中不起作用,因为 PixelFormat.RGBA_8888 不适合 momo app player。

所以我将 PixelFormat.RGBA_8888 更改为 PixelFormat.RGBX_8888

尽管代码可以正常工作,但下面的代码不起作用,因为 pixelformat 已更改。

我认为让它工作的简单方法是将图像格式从 RGBX 更改为 RGBA。

有没有办法改变像素格式?

或者如何从 PixelFormat.RGBX_8888 获取 RGB 值?

请帮助并节省我的时间。

谢谢你!

0 投票
1 回答
1873 浏览

c# - Converting 8bpp Indexed Bitmap to 24bpp and back again with the same custom color palette

I'm making a tool that does some graphical editing to some bitmaps. I have some 8bppIndexed bitmaps with an existing color palette that I have to convert to 24bppRgb to allow me to draw on it and edit colors of pixels based on some options the user selected. Bitmap graphic is the original 8bpp .bmp file:

After drawing and editing Bitmap datagraphic, I'm trying to convert it back to 8bppIndexed with the same color palette as Bitmap graphic. I can do that like this:

However, after cloning datagraphic with the same pixel format as graphic, it creates an entirely new color palette. The colors in datagraphic are then all incorrect after applying ColorPalette pal. They only match by their index number between the two palettes. Is there another way of doing this that preserves the colors?

And yes, the bitmaps need to be 8bppIndexed with the custom palette. I'm trying to avoid the need to go through Photoshop to change the color index of all the end result data graphics with the correct palette.

I should say that I'm still fairly new to C#. I hope I was clear as to what I'm trying to do. I appreciate any help here. Thanks in advance.

0 投票
1 回答
3335 浏览

java - 将图像从字节数组转换为平面 4:2:0 YUV 全比例像素格式的位图

更新:我联系了设备的供应商,他们让我知道它使用的是平面 4:2:0 YUV 全尺寸像素格式。经过研究,我发现 YUV 4:2:0 似乎有 3 种主要格式:I420、J420 和 YV12。我很兴奋,因为在 android YuvImage 类中有这种图像格式的常量,但是在运行我的代码时,我得到了以下异常:

嗯,那真是个无赖。。

之后我了解了YUV420和NV21的区别: YUV420 YUV420_NV21

我尝试编写一些简单的函数来交错 2 个色度平面,如 NV21 像素格式图像所示。

但是,结果似乎仍然与我的原始代码相同。我考虑的一个可能原因是字节数组的大小(1843200)。我读到对于 YUV420,一个像素的深度是 12 位。相机分辨率为 1280x720,即 921,600 像素或 1,382,400 字节。这比实际字节数组大小小三分之一。我读到飞机之间可能有一些填充物,但我不知道如何找到它。

YuvImage 类在其构造函数中有一个 strides 参数,但即使在阅读了 android 开发人员文档后我也不确定如何使用。

有什么线索吗?

原帖:

我遇到了以下问题:我正在尝试访问没有提供有关使用哪种类型的相机或图像格式的信息的设备的相机。提供的唯一信息是关于如何检索包含视频流输出的字节数组。然而,我发现分辨率为 1280x720,字节数组大小为 1843200。通过谷歌搜索,我偶然发现了使用 YUYV 和类似像素格式的尺寸和尺寸完全相同的相机。基于这些知识,我编写了以下代码:

BitmapFactory.decodeByteArray 函数返回了一个有效的位图,但是在显示它时我看到图像有绿色和紫色斑点,可能与颜色通道有关?示例图片: 带有绿色/紫色斑点的图像

有没有办法找出已使用的确切像素格式/编码?我不确定从这里开始还有什么其他的尝试。任何建议表示赞赏,谢谢!

0 投票
1 回答
2173 浏览

android - Android PixelFormat中的RGBA_8888、TRANSPARENT、TRANSLUCENT有什么区别?

在android api文档中,我只得到关于TRANSPARENT和TRANSLUCENT的声明,而没有关于RGBA_8888的内容,所以我完全被他们迷惑了。

TRANSLUCENT:系统选择支持半透明的格式(许多 alpha 位) TRANSPARENT:系统选择支持透明的格式(至少 1 个 alpha 位)

当我使用这 3 种格式时有什么实际区别(实际上我在视图上使用函数 setFormat() 时我无法弄清楚任何区别)?

0 投票
0 回答
509 浏览

macos - macOS VTCompressionSession:如何控制 JPEG 色度二次采样模式?(YUV 4:2:0)

对于我们当前的项目,我们已经生成了一系列图像帧,经过一些处理,我们需要使用一些编解码器实时压缩并通过网络发送。第一个实现需要使用 JPEG,尽管稍后将添加其他更专注于视频的编码。

我们一直在使用 Apple 的 VideoToolbox.framework 进行压缩,因为它的 JPEG 编码器kCMVideoCodecType_JPEG( . (它似乎没有硬件加速 JPEG,FWIW。)

这一切都很好,除了输出帧上的一些典型的 JPEG 振铃伪影。理论上这没有问题,有一个kVTCompressionPropertyKey_Quality属性。不幸的是,调整这个值似乎隐含地改变了色度子采样模式—— 0.75向上似乎将编码器从 YUV 4:2:0 子采样切换到 4:2:2,并且在途中的某个地方1.0再次翻转到 4:4: 4. 由于我们无法控制的原因,我们需要将帧编码为 4:2:0 JPEG,而 0.74 的质量水平非常糟糕。另外,Apple 可能会在未来的版本中更改他们的阈值,即使我们坚持使用 0.74,这也会突然破坏我们的代码。

有没有办法手动选择 aVTCompressionSession使用的色度二次采样模式?

已经尝试过:我们的源帧数据以 BRGA 形式出现,这就是我们一直用于源CVPixelBuffer对象的像素格式。一种想法是自己进行色彩空间转换,并提供kCVPixelFormatType_420YpCbCr8BiPlanarFullRange像素格式的像素缓冲区。压缩会话肯定不会将其上采样到 422 或 444?事实证明确实如此。没有帮助。

还有其他建议吗?目前还不太清楚可以在压缩会话、每一帧、像素缓冲区等上设置哪些属性。 - 我已经挖掘了框架头文件,并没有发现任何明显的东西,但我错过了什么吗?或者是切换到不同 JPEG 编码器的唯一解决方案?

这是我们的压缩会话初始化代码,包括质量设置:

像素缓冲区的创建方式如下:

或者在使用 YUV420 像素缓冲区时:

每个帧编码都是通过这个调用开始的: