我使用大華攝像頭的SDK進行開發的時候,從SDK的回呼函式接收到原始的影像資訊,但是我想直接使用opencv讀取記憶體中的資料,沒有什么思路。各位大佬有沒有什么好的方法。主要代碼如下:
char fileName[30] = "originData";
void CALLBACK RealDataCallBackEx(LLONG lRealHandle, DWORD dwDataType, BYTE
* pBuffer, DWORD dwBufSize, LONG param, LDWORD dwUser)
{
//pBuffer指向的是資料緩沖區的頭部,dwBufSize是資料的大小。
switch (dwDataType)
{
case 0:
//原始音視頻混合資料
printf("receive real data, param: lRealHandle[%p], dwDataType[%d], pBuffer[%p], dwBufSize[%d]\n",
lRealHandle, dwDataType, pBuffer, dwBufSize);
CLIENT_SaveRealData(lRealHandle, fileName);
break;
。。。。。。。。
我如果直接將原始資料保存成檔案,在PotPlayer可以直接打開,在PotPlayer上查看檔案的編碼屬性如下:
[濾鏡使用串列]
(1) Built-in DVR Source
(2) Built-in Video Codec/Transform
(3) Enhanced Video Renderer(Custom Present)
[視頻資訊]
視頻編碼: HEVC - Native D3D9 DXVA Decoder(VLD) - Intel(R) UHD Graphics 630
輸入格式: HEVC(24 bits)
輸入尺寸: 1280 × 960(1.33:1)
輸出格式: dxva
輸出尺寸: 1280 × 960(1.33:1)
幀率: 25
BitRate: 未知
根據終端列印的資訊,每次接受的原始資料資訊地址相同,但是大小每次會有差異。
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4415]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4604]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[32768]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[1881]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[173]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4291]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4711]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4655]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[5007]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4577]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4609]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4656]
receive real data, param: lRealHandle[000002BED5B0E580], dwDataType[0], pBuffer[000000CA6F2F3070], dwBufSize[4533]
在這種情況下如何才能將原始的影像資訊轉換成opencv能處理的圖片格式。各位大佬有沒有什么思路。望指點一二。

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/228579.html
標籤:圖形處理/算法
