问题标签 [image-formats]

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 回答
475 浏览

python - 使用 NumPy 将二进制数据读取为 BGRA 图像

我有一个 BGRA 图像以以下格式(串行)转储到二进制文件:[(b,g,r,a),(b,g,r,a),(b,g,r,a).. .] 我知道图像的宽度、高度和通道数(在这种情况下当然是 4 个)。

我想将图像读入一个 4D 数组,其中第一个维度表示 B 值等。我有以下代码:

这会打印出类似的内容:

其中 79 是 B,90 是 G,92 是 R,0 是 A,依此类推。现在我试图像这样重塑“数据”:

得到以下内容:

我想得到的是这样的:

0 投票
1 回答
249 浏览

image - 为什么 Tango 彩色图像中有伪影?

我在通过以下方式传递给TangoService_connectOnFrameAvailable()的回调中复制 YV12 帧:

完成此操作后,我尝试在vooya中显示 YV12 图像,并转换为 RGBA 后显示它(按照之前的答案)。但是,在这两种情况下,我都在图像的左上角和整个底部看到了一些伪影。这是一个例子:

图像伪影

我如何复制数据有问题吗?或者这是TangoService_connectOnFrameAvailable()的问题?还是平板电脑的摄像头有问题?

0 投票
2 回答
4223 浏览

c# - 不支持 8 位无符号整数向量

我正在尝试使用 Simple-itk 托管 dll 在 .bmp 图像上应用 CannyEdgeDetectionImageFilter。

这是我的代码:

我在执行 CannyEdgeDetectionImageFilter 时遇到了这个异常。

sitk::ERROR: 像素类型: 2D byclass itk::simple::CannyEdgeDetectionImageFilter 不支持 8 位无符号整数向量

如何将这个不受支持的东西转换为 simpleitk 支持?

这是我的代码的一些补充。我试图将 8 位无符号整数向量转换为支持的向量,但在这里我没有做到这一点。

sitk::ERROR:过滤器不支持从 8 位无符号整数的转换向量转换为 32 位浮点数

我还能做些什么来处理这段代码吗?

任何帮助表示赞赏。

0 投票
0 回答
849 浏览

android - Android - 将 BMP 转换为 8 位深度的 JPEG

我有一个以 BMP 格式捕获的指纹图像。代码如下。

我有一个要求,其中 BMP 文件需要转换为 JPEG 但深度为 8 位。有人可以帮忙吗?

0 投票
2 回答
691 浏览

c++ - 无法使用 Boost GIL 检测图像文件类型(未捕获异常)

我需要测试文件是 JPEG 还是 PNG,我不能相信文件扩展名,因为它可能是错误的。为此,我决定使用 GIL。

这是声明(和定义)的头文件boost::gil::png_read_dimensions。它明确指出boost::gil::png_read_dimensions “如果位置与有效的 PNG 文件不对应,则抛出 std::ios_base::failure”。事实上,这似乎与函数的实际行为相当。

问题在于boost::gil::jpeg_read_dimensions你可以在这里看到。它还明确指出“如果位置不对应于有效的 JPEG 文件,则抛出 std::ios_base::failure”。然而,情况似乎并非如此!不会抛出异常,而是libjpeg打印到 stdout 或 stderr 然后退出程序。

请参阅以下代码:

程序输出:

请注意如何打印what: ... yadiyadiyada ...Done.不打印。

我尝试做} catch(...) {而不是} catch(const ios_base::failure &ib_f) {确保没有异常通过但没有成功。不会抛出异常!

我在这里错过了一些非常明显的东西......?难道我做错了什么?有解决方法吗?

0 投票
1 回答
22426 浏览

image-processing - 图像格式 NV12 存储在内存中

我完全了解所描述的 NV12 格式的大小

NV12格式和UV平面

现在我从两个来源阅读有关以这种格式存储 UV 平面的信息:一个是https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750(v=vs.85).aspx

NV12

所有 Y 样本首先出现在内存中,作为具有偶数行的 unsigned char 值数组。Y 平面后面紧跟一组 unsigned char 值,其中包含压缩的 U (Cb) 和 V (Cr) 样本。当组合 UV 数组被寻址为 little-endian WORD 值数组时,LSB 包含 U 值,MSB 包含 V 值。NV12 是 DirectX VA 的首选 4:2:0 像素格式。预计它将成为支持 4:2:0 视频的 DirectX VA 加速器的中期要求。下图显示了 Y 平面和包含压缩 U 和 V 样本的阵列。

我的理解是:在 UV 平面中,每个 U 和 V 都存储在单字节中

当我从维基百科上读到这个时: https ://wiki.videolan.org/YUV#NV12

它说:

NV12

与 I420 相关,NV12 有一个亮度“亮度”平面 Y 和一个 U 和 V 值交错的平面。在 NV12 中,色度平面(蓝色和红色)在水平和垂直维度上均以 2 倍进行二次采样。对于 2x2 像素组,您有 4 个 Y 样本和 1 个 U 和 1 V 样本。将 NV12 视为 U 和 V 平面交错的 I420 会有所帮助。这是 NV12 的图形表示。每个字母代表一位: 对于 1 个 NV12 像素: YYYYYYYY UVUV 对于 2 像素 NV12 帧: YYYYYYYYYYYYYYYY UVUVUVUV 对于 50 像素 NV12 帧: Y*8*50 (UV)*2*50 对于 n 像素 NV12 帧: Y*8*n (UV)*2*n

我在这里的理解是:每个 U 和 V 在每个字节中逐位交错。所以UV平面的每个字节将包含交错的4U位和4V位。

谁能澄清我的疑问?

0 投票
1 回答
62 浏览

javascript - 关于这可能是什么类型的图像格式的任何想法?

一个用 C++ 编写的程序正在向我的 node.js 服务器发送图像,不幸的是我无法访问 C++ 代码。我的目标是在我的前端显示此图像,我尝试通过对数据执行 .toString('base64') 调用来做到这一点,但这没有用。这是我将数据写入文件时的数据与执行 for 循环并执行 .toStrng() 时的数据。关于图像格式的任何想法在此处输入图像描述 执行以下代码后

在此处输入图像描述

0 投票
1 回答
54296 浏览

python - 如何使用 PIL 获取图像的格式?

使用 PIL.Image 加载图像文件后,如何确定图像文件是否为 PNG/JPG/BMP/GIF?我对这些文件格式了解甚少,PIL 可以format从文件头中获取元数据吗?还是需要“分析”文件中的数据?

如果 PIL 不提供这样的 API,是否有任何 python 库可以提供?

0 投票
1 回答
305 浏览

android - setParameters 失败的 Android 相机 - 分辨率正确

这是我的相机设置:

设置 ImageFormat 会导致setParameters failed错误。所以它显然不是问题所在。我还检查了设备上支持的图片/预览分辨率,所以肯定没有问题。

这种图像格式应该在所有设备上兼容......故事是什么?

0 投票
1 回答
2133 浏览

android - 关于图像格式 NV21 及其似乎具有的不同内存布局的混淆

我必须处理上面给出的格式的图像。但是,我发现了有关它的相互矛盾的信息。

根据另一个堆栈溢出答案,UV 值彼此跟随,而根据维基百科,V 值位于内存中的 U 值之后。哪一个是正确的,或者如果他们都是,有什么区别?

会不会是 NV12 与 NV21 的问题?但是,站点声明它们应该简单地切换。

也许它与平面、半平面或非平面的图像有关,尽管我不知道这些术语是什么意思。

有人可以澄清一下吗?