Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将YUV数据输入到Opencv?_Opencv_Yuv_Mat - Fatal编程技术网

如何将YUV数据输入到Opencv?

如何将YUV数据输入到Opencv?,opencv,yuv,mat,Opencv,Yuv,Mat,我是Opencv的初学者。在我的新opencv项目中,我必须从相机设备捕获视频帧,并需要将它们交给opencv进行处理,但现在我的相机无法工作(硬件问题)。我需要使用从另一个相同类型的相机设备获取的YUV文件来测试opencv应用程序。 因此,我的问题是: 如何将YUV数据提供给opencv?opencv支持YUV数据吗 从我的调查中,我可以知道opencv将捕获的帧转换为格式Mat。因此,是否有任何方法将YUV数据直接转换为Mat对象并提供给opencv进行处理 我的设备没有任何用于MPEG、

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

从我的调查中,我可以知道opencv将捕获的帧转换为格式Mat。因此,是否有任何方法将YUV数据直接转换为Mat对象并提供给opencv进行处理


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

我最近在这里问了一个类似的问题

openCV VideoCapture对象是捕获视频的最简单方法,但它会自动将帧转换为BGR格式。您可以使用videoCapture.set(CV\u CAP\u PROP\u CONVERT\u RGB,false)禁用此功能。

由于某些原因,该特定命令无法与我的相机配合使用,因此我被迫使用V4L2库来读取帧(这与videoCapture使用的库相同)。V4L2的视频捕获代码示例:。然后,我将这些帧存储在cv::Mat中进行处理


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

简短的回答是:是的,您可以通过将YUV数据转换为Mat将其呈现给OpenCV。请看

如果您的YUV数据以原始视频的形式存在,请使用文件i/o从YUV视频文件中一次读取一帧(作为字符数组),并使用上面参考答案中描述的方法将其转换为Mat

当您的相机硬件正常工作并且使用OpenCV捕获(例如VideoCapture)时,它会将YUV流转换为BGR。没有办法让原始的YUV strem从摄像机直接进入OpenCV。如果您需要处理原始YUV流(例如,以自定义方式解释有效负载),唯一的方法是使用LIB(如V4L2)直接从摄像头读取YUV流,并将其转换为Mat,然后使用其余的OpenCV函数。但这离题了