在 opencv for c 中,什么函数与 Mat::convertTo 和 cvtColor() 完全相同

in opencv for c what function does the exact same thing as Mat::convertTo and cvtColor()

本文关键字:cvtColor convertTo Mat for opencv 函数 什么      更新时间:2023-10-16

我试图理解opencv的c函数cvSaveImage,并与这里的2.4.6文档有关:

函数保存图像将图像保存到指定的文件。图像格式为
根据文件扩展名选择(有关扩展名列表,请参阅(加载图像))。 只有 8 位(或 16 位无符号(+16u+)在 PNGJPEG 2000TIFF 的情况下)单 通道或 3 通道(‘BGR’通道顺序)图像可以使用 此函数。如果格式、深度或频道顺序不同,请使用 Mat::convertTo()cvtColor()保存前对其进行转换。或者,使用通用 XML I/O 函数,用于将映像保存为 XML 或YAML格式。

它说"如果格式、深度或通道顺序不同,请使用 Mat::convertTo()cvtColor() 在保存之前进行转换。

哪些函数会在 C 接口中做同样的事情。 如果可能,请在您的回复中包含示例代码。

嗯。我想你正在寻找cvCvtColor

void cvCvtColor(const CvArr *src, CvArr *dst, int code) 

将图像从一个色彩空间转换为另一个色彩空间。

http://opencv.willowgarage.com/documentation/c/miscellaneous_image_transformations.html

例如,如果您有 RGBA 图像并希望将其转换为 BGR 以进行保存:

cvCvtColor(rgba_src, bgr_dst, CV_RGBA2BGR)

在实际代码中,它将是这样的:

/* Create an IplImage with 3 channels and 8 bits per channel,
   with the same dimensions that rgba_src*/
IplImage *bgr_dst = cvCreateImage(cvGetSize(rgba_src), IPL_DEPTH_8U, 3);
cvCvtColor(rgba_src, bgr_dst, CV_RGBA2BGR);
cvReleaseImage(&rgba_src);

类似的东西。请记住,如果rgba_src是捕获设备中的帧,则不应释放它。