opencv - 将 4 channel 图像转换为 3 channel 图像

标签 opencv

我正在使用 OpenCV 2.4.6。我正在尝试将 4 channel RGB IplImage 转换为 4 channel HSV 图像。下面是我的代码。这给出了错误“OpenCV 错误:断言在未知函数中失败”。我认为 cvCvtColor 支持 3 channel 图像。有什么方法可以将 4 channel RGB 转换为 HSV 或将 4 channel RGB 转换为 3 channel RGB?

 IplImage*  mCVImageColor = cvCreateImageHeader(cvSize(640,480), IPL_DEPTH_8U, 4);
 /*Doing something*/
 IplImage* imgHSV = cvCreateImage(cvGetSize(mCVImageColor), IPL_DEPTH_8U, 4);
 cvCvtColor(mCVImageColor, imgHSV, CV_BGR2HSV); //This line throws exception

最佳答案

通常假设第 4 个 channel 是 alpha (A) channel 。因此,正确的转换代码是:

cvCvtColor(mCVImageColor, imgHSV, CV_BGRA2HSV);

注意 BGRA 中的 A

此外,根据您的语法 (mCVImage...),我猜您正在使用 C++。那么,为什么不使用 OpenCV 的 C++ API 呢? 如果您选择使用 C++,文档仍然过时,您可以找到 OpenCV 2.4.6 的最新颜色转换代码 here .

对于您的情况,正确的颜色转换代码 (C++) 是:cv::COLOR_BGRA2HSV。但是,如果您使用的是 C++ API,那么您应该使用 cv::Mat 对象并调用函数 cv::cvtColor(...) 而不是使用 IplaImagecv 前缀函数。

关于opencv - 将 4 channel 图像转换为 3 channel 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19028830/

相关文章:

python - 使用 opencv Filter2D 函数时如何避免包含零?

OpenCV 怪胎 : Fast Retina KeyPoint descriptor

python - 如何通过 Yocto/poky 在 Jetson Nano 上使用带摄像头的 OpenCV

python - OpenCV如何平滑轮廓,降低噪声

opencv - SVM 训练 OpenCV

python - 无法在 OpenCV Python 中使用标志?

opencv - Opencv中的眼睛检测问题

macos - CMAKE for opencv 3.0 安装找不到 python3

python - 无法通过 OpenCV dnn 模块显示 YOLO 结果

JavaCV透视校正