我用视频采集卡做了一个视频监控软件,我想在这个系统上面加上一个人脸识别的功能!我是用OpenCV做的,现在遇到一个问题 就是我从采集卡上面采集的数据如何转变成OPenCV能够处理的数据,书上面说用cvSetData这个函数就可以了。但是我用了一下不行!下面是我的具体的做法:
int __cdecl StreamDirectReadCallback(ULONG channelNum,void *DataBuf,DWORD Length,int frameType,void *context)这是从板卡读取视频流函数,channelNum是通道号,我用的板卡是8路海康产品,DataBuf是存取视频流数据的指针,rameType是帧的类型。
我是在一开始的时候就
if(channelNum==3)//3号通道接了一个摄像头
{
IplImage*image;
image=cvCreateImageHeader(cvSzie(704*576),IPL_DEPTH_8U,1);
cvSetData(image,DataBuf,256*3);//我用的是cif格式的图像浏览}
然后获得数据以后我就创建一个窗口cvWindowed("image");显示cvShowImage("image",image);
执行的时候出现了一个对话框,上面有时那种黑白电视那种沙沙的现状,偶然调试的时候会在图像的一个部位显示图像的一点内容,这个是什么原因啊??我的做法是不是错了啊,请高手指教从板卡上面怎么读取视频流!把这个视频流转变成OpenCV能够处理的IplImage啊?