技术中心
 
 

USB摄像头采集视频问题总结

   日期:2014-06-17    

一、虚拟机无法识别摄像头

虚拟机系统无法识别摄像头,而摄像头是正常的,可以进行识别,而在虚拟机移动设备上找不到摄像头,解决办法是将虚拟机重新安装,只是重装VMwareWorkstation,因为VMwareWorkstation存在漏洞,重装VMwareWorkstation只需在网上下载一个安装即可,不许卸载以前的安装,这样就可识别摄像头。

二、摄像头采集图片的方法

方法一: 使用V4L2采集视频数据。一般V4L2采集视频数据分为五个步骤:首先,打开视频设备文件,进行视频采集的参数初始化,通过V4L2接口设置视频图像的采集窗口、采集的点阵大小和格式;其次,申请若干视频采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间,便于应用程序读取/处理视频数据;第三,将申请的帧缓冲区在视频采集输入队列排队,并启动视频采集;第四,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;第五,停止视频采集。

方法二:使用opencv库函数

CvCapture * capture=cvCreateCameraCapture(0); 打开摄像头

IplImage* frame=cvQueryFrame(); 读入视频

保存图片:cvSaveImage(“picture”,frame);

保存视频:CvVideoWriter* writer=0;

Writer=cvCreateVideoWriter(“out.avi”,CV_FOURCC(‘F’,‘L’,‘V’,‘1’),fps,cvSize(frame->width,frame->height),isColol);

cvWriterFrame(writer,frame);

三、采集BMP格式的图片,BMP图片的头错误

BMP格式的图片包括文件头、图像头和图像信息。文件头和图像头总共54个字节,文件头14个字节,图像头40个字节。

 

 

 

 

42 4D:对应的是字母“BM”,即bf.bfType=0x4d42;

36 30 01 00:表示图文件的大小尺寸,文件尺寸为0x00013036,即bf.bfSize=54+bi.biSizeImage;

00 00 00 00:保留位,用来存储文件大小数据,即bf.bfReserved=0;

36 04 00 00:位图颜色数据域相对文件开始处的偏移量,即bf.bfofiBits=54;

28 00 00 00:位图信息头,0x00000028=40,即biSize=40;

40 01 00 00:位图宽度,即biWidth=320;

F0 00 00 00:位图高度,即biHeight=240;

01 00:位图设备级别,即biPlanes=1;

08 00:位图级别,即biBitCount=8;

00 00 00 00:压缩类型,即biCompression=0;

00 00 00 00:图像信息区域,表示图像的颜色数据区,即biSizeImage=ImageWidth*ImageHeight*3;每个像素占3字节

C4 0E 00 00:颜色变址数,即biClrUsed=3652;

C4 0E 00 00:重要颜色变址数,即biClrImportant=3652;

00 01 00 00:水平分辨率,即biXPelsPerMeter=64;

00 01 00 00:垂直分辨率,即biYPelsPerMeter=64;

图片头文件错误,起初是将头的14个字节一起写入fwrite(&bf,14,1,fp1),会出错,解决办法是将头文件一个一个字节写入fwrite(&bf,2,1,fp1),就可以读取正确的图片。

 
标签: USB摄像头 采集
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢