《海思VPSS — 将1920*1080图像通过VPSS缩放旋转成800*1280在LCD上显示》

使用场景:

  海思3516想将VI进来的的1920*1080(横屏)图像,通过VPSS缩放和旋转功能变成800*1280(竖屏)。

先说一下总结:

  采用的摄像头是1920*1080。目的是在800*1280的LCD上显示。

  因为摄像头是横屏,而LCD是竖屏。如果直接通过1920*1080先缩放成1280*800。再通过VPSS进行旋转成800*1280到LCD进行显示。

  在实验中发现LCD显示还是横屏。

  但是把摄像头物理旋转90°。就可以实现LCD显示竖屏。

有个问题:

  有可能会想,摄像头物理旋转90°。那我VPSS不旋转不就行了。直接输出1280*800。不就变成竖屏了吗?

  实现发现:竖屏是竖屏了。但是图像会拉升。因为1280*800的图像在800*1280的LCD上显示。必然会拉升。

实现方式:

  1.通过设置VPSS的通道属性使VPSS直接输出缩小后的图片。

  

问题:

  在VO显示直接蓝屏。

  通过cat /dev/logmpp提示:提示input size(1920,1080) and output size(800,1280) out of zoom_ratio[1,16]

  

解决:

  首先一个问题。将1920*1080缩放成800*1280。这是缩小呢还是放大呢。

  所以应该是1920*1080先缩小成1280*800。也就是都是横屏。再通过旋转,变成800*1280。

  因此把上面代码中的800和1280对调一下。再旋转一下就行了。

  通过cat  /proc/umap/vpss可以看到

  

  

   

   vpss进来的是1920*1080。将通道属性设置成1280*800就可以实现缩放。然后通过旋转。最后的VPSS CHN OUTPUT RESOLUTION就可以看到VPSS实际的图像输出。

  

重点注意:

  通道缩放问题。3516的通道0只支持放大,其他通道只支持缩小。因此我们VPSS中要设置成通道1。

  

   

原文地址:https://www.cnblogs.com/zhuangquan/p/13606021.html