我需要快速處理灰度幀,因此我只需要YUV 4:2:0視頻中的Y分量我有。正如我從剖析器中看到的,很多時間都在浪費無用的YUV-> RGB轉換。如何從H264 4:2:0視頻讀取Y分量YUV2RGB-> RGB2GRAY轉換
VideoCapture::cap.set(CV_CAP_PROP_CONVERT_RGB, false)
給沒有影響,因爲我可以從分裂
Mat ch[3]; split(frame,ch); imshow("it must be U-channel", ch[1]);
幀看仍處於RGB,不YUV,即VideoCapture 忽略 CV_CAP_PROP_CONVERT_RGB標誌(我相信的ffmpeg庫所使用的OpenCV的對於視頻解碼可以理解這種標誌)。
那麼,請問有人知道如何更快地從視頻序列中獲取灰度圖像嗎? OpenCL方法也可以,因爲我將Mat轉換爲oclMat以在讀取後處理這些幀(包括當前無用的ocl :: cvtColor(A,B,CV_RGB2GRAY))。
你是否處理普通視頻文件?沒有簡歷參與? – 2014-09-19 08:51:08
是的,它是我擁有的常規視頻文件之一 - 僅需1-2小時從互聯網上觀看的電影。沒有涉及簡歷。我確定它是由ffmpeg編碼的。你有沒有從CV_CAP_PROP_CONVERT_RGB標誌與4:2:0電影中的任何一個一起工作?正如我在這裏發現這[相機問題是相同的](http://stackoverflow.com/questions/21881299/get-grayscale-image-directly-from-webcam-using-opencv)。 – 2014-09-19 09:33:02