将从视频获得的帧拆分为单独的通道

时间:2016-02-23 11:52:18

标签: c++ opencv video split

我试图逐帧读取视频(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之前的其他图像,并且工作正常,因此我认为问题必须是循环。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您正在使用cv::Vector,而应使用std::vector(请注意小写 v )。

std::vector<Mat> channels; // std::vector, not cv::Vector
split(frame2, channels);