Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
C++ 使用OpenCV将YUV转换为有损压缩_C++_Image Processing_Opencv - Fatal编程技术网

C++ 使用OpenCV将YUV转换为有损压缩

C++ 使用OpenCV将YUV转换为有损压缩,c++,image-processing,opencv,C++,Image Processing,Opencv,如何将YUV颜色空间中的图像转换为JPEG图像 我将原始图像数据保存在char*变量中: char* frame = (char*)camera->getFrame(); // YUV colorspace image data 我需要将其转换为JPEG图像数据。我不想将它保存到磁盘,因为我将以流的形式发送它。OpenCV本身不导出此功能。最干净的方法是使用libjpeg进行编码。请参见这些问题的答案: 检查opencv src中的cvcolor.cpp文件。这里面有所有的颜色转换

如何将YUV颜色空间中的图像转换为JPEG图像

我将原始图像数据保存在char*变量中:

char* frame = (char*)camera->getFrame(); // YUV colorspace image data

我需要将其转换为JPEG图像数据。我不想将它保存到磁盘,因为我将以流的形式发送它。

OpenCV本身不导出此功能。最干净的方法是使用
libjpeg
进行编码。请参见这些问题的答案:


检查opencv src中的cvcolor.cpp文件。这里面有所有的颜色转换

我建议您修改此行附近的现有例程:

/*BGR/RGB->YCrCb*/

它们几乎正是YUV编码所需要的。如果是4:4:4而不是4:2:2或4:1:1

用于jpg压缩

  • jpg编码器和解码器在grfmt_jpeg.cpp中,它恰好包含“jpeglib.h”

  • 你可以直接打电话给他们


  • 那可不好。我需要先压缩图像,然后在一个装有封闭嵌入式linux的系统上对其进行流式处理。它只有OpenCV,我无法安装任何其他库。是否有其他方法可以在流媒体播放之前压缩图像,从而使图像更轻?我需要节省时间。使用gzip是一个好主意吗?在我的第二个链接的公认答案中,您会发现OpenCV内部有用于编码为JPEG而不写入文件的函数。只是在较新版本的OpenCV中,它们可能会更改,而无需另行通知,因为它们不是API的一部分。如果您被困在一个带有特定库设置的封闭系统上,您可能无论如何都不关心这个问题。此外,zip算法总是有帮助的,但您不应该期望使用它会减少50%以上。。