刚学习QT看不懂《Linux 下用 QT 打开摄像头并显示》代码,求指点

justdoman 发布于 2011/05/09 12:41
阅读 2K+
收藏 1
Qt

本人刚刚开始学习QT,有许多不懂的地方,望高人指点。代码地址http://www.oschina.net/code/snippet_124925_3789Linux 下用 QT 打开摄像头并显示 》在阅读完代码中有许多看不懂的地方,希望有高人来指点一下。

问题如下:

[文件] videodevice.h

33     int get_frame(void **, size_t*);  其中括号内的变量是什么

意思为什么用了void两层指针和size_t指针后面却没有指针变量?46 

buffer* buffers; 这里是定义了buffer里的指针变量buffers吗?

 

[文件] processImage.h

11     ProcessImage(QWidget *parent=0); 指针对象*parent=0为什么

赋值为0

29     void paintEvent(QPaintEvent *);   QPaintEvent *是什么意思

呀?有指针但是没有指定变量?

 

 

[文件] videodevice.cpp

15    fd = open(dev_name.toStdString().c_str(), O_RDWR/*|

O_NONBLOCK*/, 0);  这句话是什么意思?

20       emit display_error(tr("open: %1").arg(QString(strerror

(errno))));  其中的emit是什么意思?.arg是什么意思?strerror是什么意思?

38     v4l2_capability cap;  是什么意思?

39     v4l2_cropcap cropcap; 是什么意思?

40     v4l2_crop crop;  是什么意思?

41     v4l2_format fmt; 是什么意思?

43     if(-1 == ioctl(fd, VIDIOC_QUERYCAP, &cap)) ; 其中的ioctl是什么意思?VIDIOC_QUERYCAP是什么意思?

56     if(!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) ; cap.capabilities是什么意思? V4L2_CAP_VIDEO_CAPTURE是什么意思?

62     if(!(cap.capabilities &V4L2_CAP_STREAMING));cap.capabilities 是什么意思? V4L2_CAP_STREAMING是什么意思?

72     if(0 == ioctl(fd, VIDIOC_CROPCAP, &cropcap)) 

VIDIOC_CROPCAP是什么意思?

73    { 

74        CLEAR(crop); 

75         crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 其中 .type是什么意思?

76        crop.c = cropcap.defrect; 其中.c.defrect是什么意思?

 

99     fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 

100     fmt.fmt.pix.width = 640; 

101     fmt.fmt.pix.height = 480; 

102     fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; 

103    fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;  这几句的意思是什么?

124     req.count = 4; 

125     req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 

126     req.memory = V4L2_MEMORY_MMAP;  这几句里的.count.memory.type是什么意思?

173                 mmap(NULL, // start anywhere 

174                      buf.length, 

175                      PROT_READ | PROT_WRITE, 

176                      MAP_SHARED, 

177                      fd, buf.m.offset);  这几句中的映射括号的内容是什么?

 

 

[文件] processImage.cpp 中的93行到148行之间对楼主的yuv转到rgb算法没有看的太懂

 unsigned int pixel_16;

 unsigned char pixel_24[3];

 unsigned int pixel32;这三项定义分别指的是什么?为什么出现了y0y1两个分量,以及进行相应的移位(除法)是什么作用?

pixel32 = convert_yuv_to_rgb_pixel(y0, u, v); pixel32 = convert_yuv_to_rgb_pixel(y1, u, v);  为什么要两次调用他?

在此先拜谢高人~~

加载中
0
c
censhao

 你有c++基础吗?

0
ddatsh
ddatsh

如LS所说

学习的热情支持下

没有一丁点C++基础 ,回答了所有的问题 都是没有用的

需要狂补 C++基础  很长一段时间

0
hawkyoung
hawkyoung

我瞄了一眼楼主的问题,还没看正文,你问了许多是关于V4l2接口的linux摄像头设备的操作问题,看看有关资料吧

如果没有任何与linux设备操作相关的编程经验,最好看一下资料,ioctl都不知道是什么,看完这篇文章估计很吃力。

大部分的问题都属于这类,跟QT没有关系。

并且我提醒一句,你要做项目的话,不见得你拿到的板子上摄像头的设备接口就是V4l2的,最好验证一下

0
j
justdoman

引用来自#3楼“dd”的帖子

如LS所说

学习的热情支持下

没有一丁点C++基础 ,回答了所有的问题 都是没有用的

需要狂补 C++基础  很长一段时间

 只学过基础的C语言,自己看了一些C++的书籍……

0
j
justdoman

引用来自#2楼“censhao”的帖子

 你有c++基础吗?

只学过基础的C语言,自己看了一些C++的书籍……

0
j
justdoman

引用来自#4楼“hawkyoung”的帖子

我瞄了一眼楼主的问题,还没看正文,你问了许多是关于V4l2接口的linux摄像头设备的操作问题,看看有关资料吧

如果没有任何与linux设备操作相关的编程经验,最好看一下资料,ioctl都不知道是什么,看完这篇文章估计很吃力。

大部分的问题都属于这类,跟QT没有关系。

并且我提醒一句,你要做项目的话,不见得你拿到的板子上摄像头的设备接口就是V4l2的,最好验证一下

 好的,谢谢,在qt,linux编程以前从来都没有涉及过,但是我做的课题和这个有一定的相关度~

0
天蚕变
天蚕变
nin 你好。还在做这个项目吗?? 渴望和您交流
0
中山野鬼
中山野鬼

引用来自“censhao”的答案

 你有c++基础吗?

基本我也这个是这个问题。很多楼主的问题不是QT的问题。是代码表示什么逻辑搞不清楚的问题。
返回顶部
顶部