opencv - 如何给Opencv输入YUV数据?

标签 opencv yuv mat

我是 Opencv 的初学者。在我的新 opencv 项目中,我必须从相机设备捕获视频帧,并需要将它们提供给 opencv 进行处理,但现在我的相机不工作(硬件问题)。我需要使用从另一个相同类型的相机设备获得的 YUV 文件来测试 opencv 应用程序。 所以我的问题是: 我如何将 YUV 数据提供给 opencv? opencv是否支持YUV数据?

根据我的调查,我知道opencv将捕获的帧转换为Mat格式。那么有没有办法将YUV数据直接转换为Mat对象并提供给opencv进行处理。

我的设备没有任何 MPEG、AVI 等的编解码器

最佳答案

我最近在这里问了一个类似的问题OpenCV capture YUYV from camera without RGB conversion

openCV VideoCapture 对象是捕获视频的最简单方法,但它会自动将帧转换为 BGR 格式。您可以使用 videoCapture.set(CV_CAP_PROP_CONVERT_RGB, false)

禁用此功能

由于某些原因,该特定命令不适用于我的相机,所以我被迫使用 V4L2 库来读取帧(这与 videoCapture 使用的库相同)。 V4L2 的示例视频捕获代码:http://linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .然后我将帧存储在 cv::Mat 中进行处理。

您可以在 openCV Mat 中存储任何格式的数据,但某些操作会对数据的格式做出假设。例如 imshow 将假设数据为 BGR 或灰度格式。如果您的数据不是其中一种格式,您的图像就会看起来不对。

关于opencv - 如何给Opencv输入YUV数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27820970/

相关文章:

c# - 通过颜色权重选择图像部分上的点

python - 角优化方法 CORNER_REFINE_SUBPIX,来自 AcUro,使用 Python 和 OpenCV

python - OpenCV 错误 : bad argument, 重载解析失败,索引为 0 的序列项类型错误

在 C 中将 yuv420p 转换为 rgb888

c++ - OpenCV:改变像素的颜色

python - 如何在具有最小、平均和最大面积值的 numpy 一维数组中选择子数组?

video - NV12 64x32 平铺格式的内存布局?

android - 我怎么知道来自android相机onPreviewFrame的YUV格式?

opencv - OpenCV (CV_8UC4) 中的 4 channel 图像矩阵中的数据是如何布局的?

java - 如何将 Mat 转换为位图?(在 linux 上运行,而不是 android)