最近的一个项目在利用opencv做一个视频的实时图像处理。发现在调用相机时对视频进行的单帧处理时间与保存在本地的视频进行单帧处理的时间不一致,处理时间相差三倍,最后发现是读写视频造成图像的通道数不一样导致的。
从相机中我读取的视频是单通道的灰度图,是对单通道图像进行的处理。
在使用cv::VideoWriter类将视频保存到本地,并使用从cv::VideoCapture类读取视频时,读取到的单帧图片从CV_8UC1转换成了CV_8UC4,因此相应的处理时间发生了变化。
解决方法:在在读取每一帧图像的时候加一个灰度处理就可以了。
pVideoCapture->read(image);
cv::cvtColor(image, image, CV_BGR2GRAY);