開發環境:Win10系統,羅技HD1080p高清攝像頭,UE4_21,VS2017後端
開發原理:多線程中經過OpenCV對攝像頭進行高清採集(1920*1080),而後顯示到UMG中。多線程
遇到問題:在2k採集模式下,畫面卡頓厲害。ide
猜測1:是否是卡在採集後的圖像cv::Mat往UTexture2D*填入時的問題,畢竟1920*1080個像素的拷貝。編碼
實踐:減少採集分辨率(640*480),而後cv::resize到1920*1080,再拷貝到1920*1080的UTexture2D* 中spa
結果:視頻很是流暢,那麼能夠斷言,跟圖像據拷貝到UTexture2D*中這一步,就不要緊了.net
猜測2:是否是攝像頭採集的問題。有大佬說了,不少攝像頭,在高分辨率的狀況下都不到15幀,以MJPG格式解碼能達到30幀。線程
實踐:這一步固然去網上搜颳了。code
原理篇參閱Jetson TX1開發筆記(六):V4L2+OpenCV3.1以MJPG格式讀取USB攝像頭圖像並實時顯示視頻
https://blog.csdn.net/c406495762/article/details/72732135對象
大體意思是這樣的,該攝像頭的YUV2輸出格式只有一種640 x 480分辨率,而輸出格式爲MJPG有多種分辨率,若是想實現高清採集,須要經過MJPG格式進行採集。
那麼,怎麼設置採集模式呢?
毫無疑問,確定在設置裏面。看看網上大佬是怎麼表演的吧。
Python opencv 調用攝像頭時設置以MJPG等編碼格式獲取視頻
https://blog.csdn.net/qq_38392644/article/details/85197264
(下面引用上篇博客,轉C++實現)
使用opencv讀取和設置攝像頭或視頻屬性代碼以下。
cv::VideoCapture cap; cap.set(proID, value) cap.get(proID)
其中,propId 的值爲 0 - 18,19個值並非每一個均可以進行修改,每一個值對應的屬性以及功能以下以下:
參數 | 值 | 功能/意義 |
---|---|---|
CV_CAP_PROP_POS_MSEC | 0 | 視頻文件的當前位置(以毫秒爲單位)或視頻捕獲時間戳 |
CV_CAP_PROP_POS_FRAMES | 1 | 基於0的索引將被解碼/捕獲下一幀 |
CV_CAP_PROP_POS_AVI_RATIO | 2 | 視頻文件相對位置:0 - 電影的開始,電影的1 - 結束 |
CV_CAP_PROP_FRAME_WIDTH | 3 | 視頻裏每一幀的寬 |
CV_CAP_PROP_FRAME_HEIGHT | 4 | 視頻裏每一幀的高 |
CV_CAP_PROP_FPS | 5 | 視頻的幀速 |
CV_CAP_PROP_FOURCC | 6 | 4個字符表示的視頻編碼器格式 |
CV_CAP_PROP_FRAME_COUNT | 7 | 視頻的幀數 |
CV_CAP_PROP_FORMAT | 8 | byretrieve()返回的Mat對象的格式 |
CV_CAP_PROP_MODE | 9 | 指示當前捕獲模式的後端特定值 |
CV_CAP_PROP_BRIGHTNESS | 10 | 圖像的亮度(僅適用於相機) |
CV_CAP_PROP_CONTRAST | 11 | 圖像對比度(僅適用於相機) |
CV_CAP_PROP_SATURATION | 12 | 圖像的飽和度(僅適用於相機) |
CV_CAP_PROP_HUE | 13 | 圖像的色相(僅適用於相機) |
CV_CAP_PROP_GAIN | 14 | 圖像的增益(僅適用於相機) |
CV_CAP_PROP_EXPOSURE | 15 | 曝光(僅適用於相機) |
CV_CAP_PROP_CONVERT_RGB | 16 | 表示圖像是否應轉換爲RGB的布爾標誌 |
CV_CAP_PROP_WHITE_BALANCE | 17 | 目前不支持 |
CV_CAP_PROP_RECTIFICATION | 18 | 立體攝像機的整流標誌(注意:只有當前支持DC1394 v 2.x後端) |
//1.打開攝像機設備(默認第一個) cv::VideoCapture cap= cv::VideoCapture(0); //2.必定要先設置採集格式!!! cap.set(CV_CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G')); //3.而後再設置高清採集分辨率 cap.set(CV_CAP_PROP_FRAME_WIDTH, 1920); cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);
結果:流暢地一筆,本身去感覺