我正在使用 OpenCV 2.4.6。我正在尝试将 4 通道 RGB IplImage 转换为 4 通道 HSV 图像。下面是我的代码。给出错误“OpenCV 错误:未知函数断言失败”。我认为 cvCvtColor 支持 3 通道图像。有没有办法将 4 通道 RGB 转换为 HSV 或 4 通道 RGB 转换为 3 通道 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
常见的假设是第四个通道是 alpha (A) 通道。因此,正确的转换代码是:
cvCvtColor(mCVImageColor, imgHSV, CV_BGRA2HSV);
注意A in BGRA.
另外,我从你的语法(mCVImage...)猜测你正在使用 C++。那么,为什么不使用OpenCV的C++ API呢?
如果您选择使用 C++,文档仍然过时,您可以找到 OpenCV 2.4.6 的最新颜色转换代码here http://www.computersdontsee.net/index.php/post/2013/06/11/Nouveaux-types-dans-OpenCV.
对于您的情况,正确的颜色转换代码 (C++) 是:cv::COLOR_BGRA2HSV
。但如果你使用 C++ API,那么你应该使用cv::Mat
对象并调用函数cv::cvtColor(...)
而不是使用IplaImage
's and cv
带前缀的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)