程序中,下面的这段代码好像没有起作用,我设置的像素是720*576,但是程序第一次运行时采集的图片是720*576的,第二次运行就变成720*480了,可是也没有报错,我认为根本就没有进行像素的操作,好像芯片内部就决定了一样,求解释。
struct v4l2_format fmt;
CLEAR (fmt);
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width= 720;
fmt.fmt.pix.height= 576;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
fmt.fmt.pix.field= V4L2_FIELD_INTERLACED;
if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt)) errno_exit ("VIDIOC_S_FMT");
Yaoming Qin:
请问您用的是哪个片子?
yu he:
回复 Yaoming Qin:
你好,我用的是DM3730,这个板子好像比较新,资料少
Yaoming Qin:
回复 yu he:
这个片子是两三年前的片子了,比较老了,关于v4l2capture,请参考 http://processors.wiki.ti.com/index.php/UserGuideOmap35xCaptureDriver_PSP_04.02.00.07
http://processors.wiki.ti.com/index.php/AM35x-OMAP35x-PSP_04.02.00.07_UserGuide
yu he:
回复 Yaoming Qin:
我也看过很多这方面的资料,但就是分辨率这方面会出问题
yu he:
回复 Yaoming Qin:
我在仔细看看这些说明,看能不能解决,谢谢你了啊
yu he:
回复 Yaoming Qin:
你好!下面是你给我推荐的资料里的一段代码,我有个疑问,capability.capabilities 里面存的不是应该是个确定的东西么?那它怎么能和两个量都 & 并且相等呢?我有点不明白,以前我看TI关于STD,就是检查当前设备的制式时也有这个问题,一直不太懂。struct v4l2_capability capability; ret = ioctl(fd, VIDIOC_QUERYCAP, &capability); if (ret < 0) {printf("Cannot do QUERYCAP\n");return -1; } if (capability.capabilities & V4L2_CAP_VIDEO_CAPTURE) {printf("Capture capability is supported\n"); } if (capability.capabilities & V4L2_CAP_STREAMING) {printf("Streaming is supported\n"); }
Yaoming Qin:
回复 yu he:
这两个可以共存吧,不矛盾。
yu he:
回复 Yaoming Qin:
您好!sha
我在设置FMT的时候S_FMT和G_FMT的不一样,这是怎么回事啊,就是感觉我设置不了像素,还有我想把采集到的图片显示在LCD上,用的是FB的方式,但是却显示不出来,请问您懂这块的内容么?我可你给你我的代码,您给帮着看看有什么问题。
Yaoming Qin:
回复 yu he:
是不是有些S_FMT 不支持,所以GET的时候,不一致?
yu he:
回复 Yaoming Qin:
是这样的,同一个程序,我是在ubuntu操作系统上运行的,我采集的是YUYV格式的,上电第一次运行采集回来的图片是720*576的,第二次运行同一个程序就变成720*480的了,就算我设置成720*480,上电第一次运行,采集出来的还是720*576的,不明白为啥呢。