我正在尝试使用OpenCV 2.3.1将12位拜耳图像转换为8位RGB图像.这似乎应该使用cvCvtColor函数相当简单,但是当我用这段代码调用它时函数抛出一个异常:
int cvType = CV_MAKETYPE(CV_16U, 1);
cv::Mat bayerSource(height, width, cvType, sourceBuffer);
cv::Mat rgbDest(height, width, CV_8UC3);
cvCvtColor(&bayerSource, &rgbDest, CV_BayerBG2RGB);
Run Code Online (Sandbox Code Playgroud)
我以为我跑过sourceBuffer的末尾,因为输入数据是12位,我必须传入一个16位类型,因为OpenCV没有12位类型.所以我将宽度和高度除以2,但是cvCvtColor仍然抛出了一个没有任何有用信息的异常(错误消息是"Unknown exception").
几个月前发布的一个类似的问题从未得到解答,但由于我的问题更具体地涉及12位拜耳数据,我认为它足够独特,值得一个新问题.
提前致谢.
编辑:我必须遗漏一些东西,因为我甚至无法使用cvCvtColor函数来处理8位数据:
cv::Mat srcMat(100, 100, CV_8UC3);
const cv::Scalar val(255,0,0);
srcMat.setTo(val);
cv::Mat destMat(100, 100, CV_8UC3);
cvCvtColor(&srcMat, &destMat, CV_RGB2BGR);
Run Code Online (Sandbox Code Playgroud)