我正在使用C920 Logitech網絡攝像機爲物體識別項目。試圖修改Videocapture :: retrieve()樂趣
我想使用我自己的H264解碼器解碼來自攝像機的壓縮流(不關心現在的性能和時序,這將受到我的H264解碼器的影響)。
我想破解bool VideoCapture::retrieve(Mat& image, int channel=0)
並用我的H264解碼器替換opencv retrive()函數的解碼器調用。
我關心返回類型以及兩個解碼器功能的參數列表(都是類似的)。
但我面臨以下問題在集成/修改我的示例代碼。 所以我的查詢是下面:
I am using OPENCV 3.0 VERSION .
Q.1)
下面的示例代碼,我得到錯誤 -
#include "precomp.hpp"
#include "opencv2/opencv.hpp"
#include <strmif.h>
#include <iostream>
using namespace std ;
using namespace cv;
struct _AMMediaType;
typedef _AMMediaType AM_MEDIA_TYPE;
DEFINE_GUID(FORMAT_VideoInfo,0x05589f80,0xc356,0x11ce,0xbf,0x01,0x00,0xaa,0x00,0x55,0x59,0x5a);
DEFINE_GUID(MEDIATYPE_Video,0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
DEFINE_GUID(MEDIASUBTYPE_RGB24,0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
int main(int, char**)
{
int t1= 10;
int t2= 10;
VideoCapture cap(0); // open the default camera
cap.set(3,1280);
cap.set(4,800);
AM_MEDIA_TYPE mt;
ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24;
mt.formattype = FORMAT_VideoInfo;
if(!cap.isOpened()) // check if we succeeded
return -1;
for(;;)
{
Mat frame;
if(!cap.grab())
{
cout << "Can not grab images." << endl;
return -1;
}
cap.retrieve(frame);
imshow("cameracapture", frame);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
我收到下面的鏈接錯誤:
1>main.obj : error LNK2001: unresolved external symbol FORMAT_VideoInfo
1>main.obj : error LNK2001: unresolved external symbol MEDIATYPE_Video
1>main.obj : error LNK2001: unresolved external symbol MEDIASUBTYPE_RGB24
我聯繫所有的lib中我的項目屬性(通過使用VS2012),但沒有運氣:(
Q.2)
在OpenCV3.0 \模塊\ videoio \ SRC \ cap_dshow.cpp文件:
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24;
mt.formattype = FORMAT_VideoInfo;
正如我的LOGITECH C920相機支撐H264編解碼器,所以我試圖修改上述變量和下面的代碼行中加入我的樣本代碼 -
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_H264;
mt.formattype = FORMAT_VideoInfo;
我有以下錯誤:
main.obj :error C2065: 'MEDIASUBTYPE_H264' : undeclared identifier
什麼必要的修改,以獲得H264壓縮視頻
Q-3)
如果我將自己修改OpenCV代碼,那麼我怎樣才能構建完整的OPENCV3.0代碼(在VS2012的窗口中進行修改)並將其用於我的目的?
感謝羅馬。您的回覆我有很大幫助解決第一個查詢我問。我是主要集中在第二查詢H264。我沒找到DEFINE_GUID(MEDIASUBTYPE_H264,....)解決第二個查詢 – Ashwin 2014-12-13 08:07:50
我已添加followiong行代碼:// H264 // 34363248-0000-0010-8000-00aa00389b71 DEFINE_GUID(MEDIASUBTYPE_H264,0x34363248,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00, 0x38,0x9B,0x71); // 34363268-0000-0010-8000-00AA00389B71 DEFINE_GUID(MEDIASUBTYPE_h264,0x34363268,0x0000,0x0010,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71); – Ashwin 2014-12-13 08:23:54
你可以告訴我,如何構建OPENCV代碼,如果我將修改任何一個opencv代碼源文件(我正在使用VS2012的windows 7) – Ashwin 2014-12-13 08:32:01