我正在使用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