我试图逐帧读取视频(mp4),然后将帧从BGR转换为HSV。 然后我想将HSV Mats分成不同的通道(Hue,Saturation,Value)。
但是,这不起作用:void colorize () {
VideoCapture cap("myFile.mp4");
Mat frame;
Mat frame2;
while (true) {
cap>>frame;
cvtColor(frame, frame2, CV_BGR2HSV);
Vector<Mat> channels;
split(frame2, channels);
}
}
拆分功能会出现以下错误:
no matching function for call to ‘split(cv::Mat&, cv::Vector<cv::Mat>&)’
split(frame2, channels);
我在循环之外尝试了完全相同的代码,并将其转换为hsv之前的其他图像,并且工作正常,因此我认为问题必须是循环。
有什么想法吗?
答案 0 :(得分:2)
您正在使用cv::Vector
,而应使用std::vector
(请注意小写 v )。
std::vector<Mat> channels; // std::vector, not cv::Vector
split(frame2, channels);