资源简介
Linux环境下使用V4L2+opencv以MJPEG格式读取USB摄像头并实时显示的源代码

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
uchar *buffer;
#define IMAGEWIDTH 640
#define IMAGEHEIGHT 480
#define TRUE 1
#define FALSE 0
#define FILE_VIDEO1 “/dev/video1“
static int fd;
struct v4l2_streamparm setfps;
struct v4l2_capability cap;
struct v4l2_fmtdesc fmtdesc;
struct v4l2_format fmtfmtack;
struct v4l2_requestbuffers req;
struct v4l2_buffer buf;
enum v4l2_buf_type type;
int init_v4l2(void);
int v4l2_grab(void);
int main()
{
printf(“first~~\n“);
if(init_v4l2() == FALSE){
printf(“Init fail~~\n“);
exit(1);
}
printf(“second~~\n“);
if(v4l2_grab() == FALSE){
printf(“grab fail~~\n“);
exit(2);
}
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
printf(“third~~\n“);
cvNamedWindow(“one“CV_WINDOW_AUTOSIZE);
IplImage* img;
CvMat cvmat;
int i = 100;
double t;
while(1){
t = (double)cvGetTickCount();
ioctl(fdVIDIOC_DQBUF&buf);
buf.index = 0;
cvmat = cvMat(IMAGEHEIGHTIMAGEWIDTHCV_8UC3(void*)buffer);//CV_8UC3
//t = (double)cvGetTickCount();
img = cvDecodeImage(&cvmat1);
//t=(double)cvGetTickCount()-t;
//printf(“used time is %gms\n“(t/(cvGetTickFrequency()*1000)));
if(!img) printf(“No img\n“);
cvShowImage(“one“img);
cvReleaseImage(&img);
ioctl(fdVIDIOC_QBUF&buf);
if((cvWaitKey(1)&255) == 27) exit(0);
t=(double)cvGetTickCount()-t;
printf(“used time is %gms\n“(t/(cvGetTickFrequency()*1000)));
}
ioctl(fdVIDIOC_STREAMOFF&type);
return 0;
}
int init_v4l2(void){
if ((fd = open(FILE_VIDEO1 O_RDWR)) == -1){
printf(“Opening video device error\n“);
return FALSE;
}
if (ioctl(fd VIDIOC_QUERYCAP &cap) == -1){
printf(“unable Querying Capabilities\n“);
return FALSE;
}
else
/*
{
printf( “Driver Caps:\n“
“ Driver: \“%s\“\n“
“ Card: \“%s\“\n“
“ Bus: \“%s\“\n“
“ Version: %d\n“
“ Capabilities: %x\n“
cap.driver
cap.card
cap.bus_info
cap.version
cap.capabilities);
}
if((cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) == V4L2_CAP_VIDEO_CAPTURE){
printf(“Camera device %s: support capture\n“FILE_VIDEO1);
}
if((cap.capabilities & V4L2_CAP_STREAM
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 248 2015-08-12 16:19 singleCamD\singleCamD.pro
文件 18135 2015-08-12 20:59 singleCamD\singleCamD.pro.user
文件 6306 2015-08-12 20:46 singleCamD\main.cpp
目录 0 2015-08-12 20:59 singleCamD
----------- --------- ---------- ----- ----
24689 4
相关资源
- 基于V4L2的视频采集,能够采集YUVJPE
- 使用RTMPdump(libRTMP)直播来自v4l2的摄
- qt5_V4L2_Camera 实现摄像头实时画面显示
- v4l2中文手册(规范)全五章(包含驱
- USB摄像头通过v4l2技术采集、储存视频
- V4L2采集YUYV数据x264编码成H264视频
- linux下关于Qt界面的摄像头v4l2操作源码
- linux+QT下基于RTP协议的实时视频传输客
- v4l2采集+yuyv转yuv420p+h264编码+tcp传输
- linux+qt+v4l2 摄像头视频捕捉--源代码
- Linux下使用Qt+V4L2测试UVC相机
- 基于v4l2的qt视频实时显示
- v4l2 USB摄像头图像采集程序C
- linux下基于V4L2/Qt的usb摄像头采集显示
- v4l2采集MJPG保存到本地
- linux qt4.7 v4l2 YUV(YUYV) mmap 显示视频
- V4L2 通过JRTPLIB 实现RTP实时视频传输并
- MAX9286的V4L2测试代码
- webcam_v4l2_x264
- 嵌入式平台ARm9使用V4L2格式摄像头抓帧
- linux下基于QT和v4l2驱动的USB摄像头视频
- 智能家居的项目用的 V4L2
- v4l2采集视频并保存和lcd显示
- v4l2 QT MJPEG格式 视频采集+屏幕显示+图
- 使用Linux的V4L2读取摄像头数据+Opencv图
- v4l2 qt实时显示摄像头数据未使用ope
- V4L2视频采集与h264编码
- linux下v4l2实现图片采集
- 基于QT的V4L2摄像头视频采集并显示
- tiny4412 + qtopia + v4l2 + usb camera
评论
共有 条评论