gpt4 book ai didi

图像二进制解释 : unknown image format

转载 作者:行者123 更新时间:2023-12-02 17:26:31 25 4
gpt4 key购买 nike

假设我有一个某种格式的图像(它的二进制表示,比如来自 OpenCV 的 cv::Mat 或来自 Android 的 YuvImage,未压缩),并将其数据解释为 YUV NV21(嗯,这是 DJI 提供的示例SDK,差不多)。这是我所拥有的:

Broken frame

由此,我假设原始格式不是 NV21。 YUV2? RGB888? RGB32?一些其他的东西?

人们如何猜测二进制数据的原始格式是什么?

如果这会有所帮助,则从 DJI 无人机流中获取帧。

最佳答案

YUV 图像输出使用 Android 库,该库会根据所使用的设备产生不同的 YUV 格式。

就我而言,根据我使用的两个设备中的哪一个,我需要切换两个颜色 channel (NV12 到 NV21)的字节。

真正帮助我理解使用以下 YUV 播放器的格式是什么:
https://github.com/Tee0125/yuvplayer

在播放器中,您可以主动更改数据的解释方式,只需测试不同的设置,直到找到正确的设置。

虽然不知道大家有没有需要,但是我提供一下我用来切换 channel 的方法。

/**
* Changes a NV12 yuv Frame to the NV21 format. Basically the two color channels are switched.
*
* @param yuvFrameNV12 The YUV Frame in the NV12 format.
* @param width The width of the frame.
* @param height The height of the frame.
* @return The YUV Frame in the NV21 format.
*/
private static byte[] convertNV12toNV21(byte[] yuvFrameNV12, int width, int height) {
final int length = yuvFrameNV12.length;
for (int i1 = 0; i1 < length; i1 += 2) {
if (i1 >= width * height) { //start after the luminance bytes
byte tmp = yuvFrameNV12[i1];
yuvFrameNV12[i1] = yuvFrameNV12[i1+1];
yuvFrameNV12[i1+1] = tmp;
}
}
return yuvFrameNV12;
}

关于图像二进制解释 : unknown image format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59090834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com