将复杂浮点数的OpenCV Mat转换为灰度

时间:2016-02-14 15:00:24

标签: c++ opencv

我正在使用OpenCV从文件中读取视频的第一帧并将其存储到Mat_<std::complex<float> >并尝试使用以下代码将其转换为灰度:

cv::VideoCapture capture("test.mp4");

cv::Mat_<std::complex<float> > first_frame;

capture >> first_frame;

try {
    cv::cvtColor(first_frame, first_frame, CV_BGR2GRAY);
} catch (cv::Exception &e) {
    std::cout << "failed in converting colour\n";
    return 0;
}

然而,try块中的代码会抛出一条带有消息的异常:

OpenCV Error: Assertion failed (!fixedType() || ((Mat*)obj)->type() == mtype) in create, file C:\opencv\sources\modules\core\src\matrix.cpp, 
line 2130 terminate called after throwing an instance of 'cv::Exception' 
what():  C:\...\sources\modules\core\src\matrix.cpp:2130: error: (-215) !fixedType() || ((Mat*)obj)->type() == mtype in function create

我不确定为什么代码会抛出此异常。我之前看过这个错误信息,那时候是因为我试图输出一个与输入不同类型的数组,但这次不是问题(我不这么认为)。

我是否需要在cvtColor函数中使用不同的常量?

0 个答案:

没有答案
相关问题