Hi3516開發筆記(十):Qt從VPSS中獲取通道影像資料儲存為jpg檔案
前言
受限制
前提條件
Demo演示
相關的API
HI_MPI_VPSS_GetChnFrame:從通道獲取一幀處理完的資料
函式原型
HI_S32 HI_MPI_VPSS_GetChnFrame(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VIDEO_FRAME_INFO_S *pstVideoFrame, HI_S32 s32MilliSec);
返回值
其他注意
HI_MPI_VPSS_ReleaseChnFrame:釋放一幀影像
函式原型
HI_S32 HI_MPI_VPSS_ReleaseChnFrame (VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VIDEO_FRAME_INFO_S *pstVideoFrame);
返回值
其他注意
相關的結構體
VIDEO_FRAME_INFO_S:定義影片影像幀資訊結構體
結構體原型
typedef struct hiVIDEO_FRAME_INFO_S{ VIDEO_FRAME_S stVFrame; // 影片影像幀 HI_U32 u32PoolId; // 影片快取池ID MOD_ID_E enModId; // 當前幀資料是由哪一個硬體邏輯模組寫出的} VIDEO_FRAME_INFO_S;
VIDEO_FRAME_S:定義影片原始影像幀結構體
結構體原型
typedef struct hiVIDEO_FRAME_S{ HI_U32 u32Width; // 影像寬度 HI_U32 u32Height; // 影像高度 VIDEO_FIELD_E enField; // 幀場模式 PIXEL_FORMAT_E enPixelFormat; // 影片影像畫素格式 VIDEO_FORMAT_E enVideoFormat; // 影片影像格式 COMPRESS_MODE_E enCompressMode; // 影片壓縮模式 DYNAMIC_RANGE_E enDynamicRange; // 動態範圍 COLOR_GAMUT_E enColorGamut; // 色域範圍 HI_U32 u32HeaderStride[3]; // 影像壓縮頭跨距 HI_U32 u32Stride[3]; // 影像資料跨距 HI_U32 u32ExtStride[3]; // 10bit資料位寬的影像,部分格式分開存 HI_U64 u64HeaderPhyAddr[3]; // 壓縮頭實體地址 HI_U64 u64HeaderVirAddr[3]; // 壓縮頭虛擬地址,核心態虛擬地址 HI_U64 u64PhyAddr[3]; // 影像資料實體地址 HI_U64 u64VirAddr[3]; // 影像資料虛擬地址,核心態虛擬地址 HI_U64 u64ExtPhyAddr[3]; // 10bit資料位寬度的影像,部分格式分開存 HI_U64 u64ExtVirAddr[3]; // 10bit資料位寬度的影像,部分格式分開存 HI_S16 s16OffsetTop; // 影像頂部剪裁寬度 HI_S16 s16OffsetBottom; // 影像底部剪裁寬度 HI_S16 s16OffsetLeft; // 影像左側剪裁寬度 HI_S16 s16OffsetRight; // 影像右側剪裁寬度 HI_U32 u32MaxLuminance; // 顯示影像的最大亮度 HI_U32 u32MinLuminance; // 顯示影像的最小亮度 HI_U32 u32TimeRef; // 影像幀序列號 HI_U64 u64PTS; // 影像時間戳 HI_U64 u64PrivateData; // 私有資料 HI_U32 u32FrameFlag; // 當前幀的標記,使用FRAME_FLAG_E標記 VIDEO_SUPPLEMENT_S stSupplement; // 影像的補充資訊} VIDEO_FRAME_S;
其他注意
相關列舉
VIDEO_FIELD_E:幀場模式
PIXEL_FORMAT_E:影片影像畫素格式
VIDEO_FORMAT_E:影片影像格式
COMPRESS_MODE_E:影片壓縮模式
DYNAMIC_RANGE_E:動態範圍
COLOR_GAMUT_E:色域範圍
VIDEO_SUPPLEMENT_S:影像的補充資訊
Demo
void HiMppManager::testGetVPssFrame(){ VIDEO_FRAME_INFO_S videoFrameInfoS;#if 0 // 搜尋開開發板用了哪個通道(應該只有2個攝像頭,繫結了vpss) // 結果:探測到開發板在snap抓圖模式下在通道組0通道0下有圖片 for(int groupIndex = 0; groupIndex < VPSS_MAX_GRP_NUM; groupIndex++) { for(int channelIndex = 0; channelIndex < VPSS_MAX_CHN_NUM; channelIndex++) { HI_S32 s32MilliSec = 100; HI_S32 ret = HI_MPI_VPSS_GetChnFrame(groupIndex, channelIndex, &videoFrameInfoS, s32MilliSec); if(ret == 0) { LOG << QString("Succeed to get HI_MPI_VPSS_GetChnFrame(%1, %2, &videoFrameInfoS, %3)") .arg(groupIndex) .arg(channelIndex) .arg(s32MilliSec); break;#if 0 }else{ LOG << QString("Failed to get HI_MPI_VPSS_GetChnFrame(%1, %2, &videoFrameInfoS, %3): %4") .arg(groupIndex) .arg(channelIndex) .arg(s32MilliSec) .arg(ret);#endif } } }#endif while(HI_MPI_VPSS_GetChnFrame(0, 0, &videoFrameInfoS, -1) == 0) { LOG << "get frame"; LOG << videoFrameInfoS.stVFrame.enPixelFormat << "PIXEL_FORMAT_YVU_PLANAR_420:" << (int)PIXEL_FORMAT_YVU_PLANAR_420 << "PIXEL_FORMAT_YVU_SEMIPLANAR_420:" << (int)PIXEL_FORMAT_YVU_SEMIPLANAR_420; LOG << videoFrameInfoS.stVFrame.enVideoFormat; HI_MPI_VPSS_ReleaseChnFrame(0, 0, &videoFrameInfoS); LOG << "release frame"; }}
入坑
入坑一:獲取vpss影像一定幀數後無法再獲取
問題
原因
解決方法
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2910202/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Matlab+Qt開發筆記(二):Qt開啟mat檔案顯示讀取的資料MatlabQT筆記
- 資料儲存--檔案儲存
- Android中的資料儲存之檔案儲存Android
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- 如何獲取HDFS上檔案的儲存位置
- spark學習筆記--資料讀取與儲存Spark筆記
- 檔案IO操作開發筆記(一):使用Qt的QFile對磁碟檔案儲存進行效能測試以及測試工具筆記QT
- Hi3516開發筆記(七):Hi3516虛擬機器交叉開發環境搭建之交叉編譯Qt筆記虛擬機開發環境編譯QT
- Pandas之EXCEL資料讀取/儲存/檔案分割/檔案合併Excel
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-2 JSON檔案儲存Python爬蟲JSON
- 使用PHP獲取影像檔案的EXIF資訊PHP
- PHP匯出大量資料,儲存為CSV檔案PHP
- 從session中獲取資料Session
- redis叢集資料儲存和獲取原理Redis
- Springboot整合MongoDB儲存檔案、讀取檔案Spring BootMongoDB
- 資料儲存(1):從資料儲存看人類文明-資料儲存器發展歷程
- EntityFramework Core筆記:儲存資料(4)Framework筆記
- iOS開發資料儲存篇—iOS中的幾種資料儲存方式iOS
- 資料儲存(歸檔解檔,沙河儲存)
- Python中檔案讀取與儲存程式碼示例Python
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-1 TXT文字儲存Python爬蟲
- 從 falcon api 中獲取資料API
- 大資料檔案儲存系統HDFS大資料
- Go Web:資料儲存(2)——CSV檔案GoWeb
- Hi3516開發筆記(九):在QtCreator開發環境中引入海思sdk的bsp包,執行顯示Qt介面筆記QT開發環境
- Python3 - 獲取資料夾中的檔案列表Python
- 短視訊系統,獲取camera的的影像並儲存
- 將bmp檔案壓縮為jpg檔案
- 塊儲存 檔案儲存 物件儲存物件
- Matlab - 獲取和儲存檔案路徑選擇對話方塊Matlab
- 檔案IO操作開發筆記(二):使用Cpp的ofstream對磁碟檔案儲存進行效能測試及工具筆記
- 儲存CSDN 中的部落格文章為本地檔案
- 記憶體中的資料儲存記憶體
- Hi3516開發筆記(八):Hi3516虛擬機器交叉開發環境搭建配置QtCreator筆記虛擬機開發環境QT
- 讀書筆記5-資料儲存篇筆記
- golang 讀取切分儲存byte流檔案Golang
- (slam工具)1檔案讀取和儲存SLAM
- 檔案儲存