我正在使用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
函数中使用不同的常量?