This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM368接1080i摄像机,图像上边有黑边

Other Parts Discussed in Thread: TVP7002

大家好,

我用的是DM368的开发板,之前接D1的摄像机,图像都是正常的,现在我们用的sony的1080i的摄像机,采集到的图像上边有黑色和绿色的色块,图像的右边也有黑边。

请问大家,这个是什么问题?我们把sony的摄像机直接接到电视上,是没有这个黑边的。

我又继续做了实验,我使用了v4l2_mmap_loopback,只是在LCD上回放,上边也会有绿色和黑色的条纹。

是capture要做什么设置吗?

 

  • D1和1080i图像的长宽比例不一样,因此显示1080i时会对图像resize,然后显示到电视上。1080i显示到4:3电视时会有上下部分填充不完整的现象。

    如果你使用的demo支持1920x1080,那么可以接宽屏显示器来看显示效果;

    或者需要在capture或者display的时候对图像进行resize来适合你的显示器;

    在dmai目录下有个app是video_lookback_resize,你可以参考下。

  •        /* Crop the image depending on requested image size */

           if (ioctl(hCapture->fd, VIDIOC_S_CROP, &crop) == -1) {

    sony摄像机出来的视频确实是1920X1080的,我解码播放的时候也是1080P的。上边的绿条和黑线的问题,我已经解决了。

    我把attrs->cropY 设置成48,cropHeight还是1080,这样就没有上边的黑边了,图像也没有失真。

    但是,图像右边还是有8个像素的黑边,这个问题就麻烦了,不能这么解决了,因为cropX不能是负数。

    不知道大家有什么建议没?

  • 补充说明下,这样改是有问题的。

    if ((crop->c.left + crop->c.width > max_width) ||

       (crop->c.top + crop->c.height > max_height)) {

    v4l2_err(&vpfe_dev->v4l2_dev, "Error in S_CROP"

    " params, max_width = %d, max_height = %d\n",

    max_width, max_height);

    ret = -EINVAL;

    goto unlock_out;

    }

    我把attrs->cropY 设置成48,那么 cAttrs.cropHeight就要设置成1080-48。

    这样得到的结果,是整个图像拉伸了48个像素,虽然黑边没了,但是图像变形了。

    看来问题的根源还不在这里。

    我换了2个1080P的摄像机,都有这个问题,难道是tvp7002的设置有问题?