1.一种图像采集过程中实现自适应屏幕旋转的方法,其特征在于,该方法包括以下步骤:步骤S1:获取屏幕或摄像头的图像数据,该图像数据与当前屏幕方向相关,转入步骤S2;
步骤S2:根据当前屏幕方向对采集的图像数据进行预处理,使处理后的图像分辨率与屏幕方向不相关,转入步骤S3;
步骤S3:将经预处理后的图像数据按照指定的编码格式进行数据压缩,实现图像数据的编码,转入步骤S4;
步骤S4:将编码后的图像数据按照指定的格式和指定的流媒体协议推送至服务器端;
其中,步骤S2的具体流程包括:
步骤S201:通过调用客户端系统的分辨率获取接口函数获取当前图像的分辨率,转入步骤S202;
步骤S202:判断当前图像的分辨率是否为横屏状态下,若是,不做处理,直接结束步骤S2;否则,转入步骤S203;
步骤S203:根据当前图像的分辨率对当前竖屏图像进行等比缩放,使缩放后的竖屏状态下的图像分辨率的高与横屏状态下的图像分辨率的高相等;将缩放后的竖屏图像与横屏图像进行叠加,使叠加后的图像分辨率与横屏状态下的图像分辨率相同;
步骤S203的具体流程包括:
步骤S203a:根据当前竖屏状态下的图像分辨率w1·h1,w1为竖屏分辨率的宽,h1为竖屏分辨率的高,计算出横屏状态下的图像分辨率w0·h0,w0为横屏分辨率的宽,h0为横屏分辨率的高,w0=h1,h0=w1;
步骤S203b:对当前竖屏图像进行等比缩放,缩放后的图像分辨率为w2·h2,其中h2=h0,w2=(w1/h1)·h2;
步骤S203c:将缩放后的竖屏图像与横屏图像进行叠加,使叠加后的图像分辨率与横屏状态下的图像分辨率相同;
步骤S203c中所述横屏图像是经以下操作处理得来:
步骤一、图片输入:将缩放后图像分辨率为w2·h2的图像作为原图输入;
步骤二、模糊化处理:保持高度不变,对原图的宽度做一次缩放,使缩放后的图片宽w3=w0–w2;并对缩放后的图片进行模糊处理;
步骤三、图片水平分拆:将模糊化处理后的图片保持高度不变,宽度平均拆分成两个等宽的图片,拆分后的图片宽度w4=w3/2;
步骤四、图片拼接:在拆分后的两个等宽图片的中间加上图像分辨率为w2·h2的图像,得到横屏图像。
2.如权利要求1所述的图像采集过程中实现自适应屏幕旋转的方法,其特征在于:步骤S3中,所述指定的编码格式为H264压缩格式;步骤S4中,所述指定的格式为FLV格式,所述指定的流媒体协议为RTMP协议。
3.一种图像采集过程中实现自适应屏幕旋转的系统,其特征在于:该系统包括屏幕/摄像头采集模块、图像预处理模块、图像编码模块和图像流推送模块;
所述屏幕/摄像头采集模块用于:获取屏幕或摄像头的图像数据,该图像数据与当前屏幕方向相关;
所述图像预处理模块用于:根据当前屏幕方向对采集的图像数据进行预处理,使处理后的图像分辨率与屏幕方向不相关;
所述图像编码模块用于:将经预处理后的图像数据按照指定的编码格式进行数据压缩,实现图像数据的编码;
所述图像流推送模块用于:将编码后的图像数据按照指定的格式和指定的流媒体协议推送至服务器端;
其中,所述图像预处理模块包括分辨率获取子模块、横屏判断子模块和缩放叠加处理子模块;
所述分辨率获取子模块用于:通过调用客户端系统的分辨率获取接口函数获取当前图像的分辨率,向横屏判断子模块发送判断信号;
所述横屏判断子模块用于:收到判断信号后,判断当前图像的分辨率是否为横屏状态下,若是,不做处理;否则,向缩放叠加处理子模块发送处理信号;
所述缩放叠加处理子模块用于:收到处理信号后,根据当前图像的分辨率对当前竖屏图像进行等比缩放,使缩放后的竖屏状态下的图像分辨率的高与横屏状态下的图像分辨率的高相等;将缩放后的竖屏图像与横屏图像进行叠加,使叠加后的图像分辨率与横屏状态下的图像分辨率相同;
所述缩放叠加处理子模块进行缩放、叠加处理的具体流程为:收到处理信号后,根据当前竖屏状态下的图像分辨率w1·h1,w1为竖屏分辨率的宽,h1为竖屏分辨率的高,计算出横屏状态下的图像分辨率w0·h0,w0为横屏分辨率的宽,h0为横屏分辨率的高,w0=h1,h0=w1;对当前竖屏图像进行等比缩放,缩放后的图像分辨率为w2·h2,其中h2=h0,w2=(w1/h1)·h2;将缩放后的竖屏图像与横屏图像进行叠加,使叠加后的图像分辨率与横屏状态下的图像分辨率相同;
所述横屏图像是经以下操作处理得来:
将缩放后图像分辨率为w2·h2的图像作为原图输入;保持高度不变,对原图的宽度做一次缩放,使缩放后的图片宽w3=w0–w2;并对缩放后的图片进行模糊处理;将模糊化处理后的图片保持高度不变,宽度平均拆分成两个等宽的图片,拆分后的图片宽度w4=w3/2;在拆分后的两个等宽图片的中间加上图像分辨率为w2·h2的图像,得到横屏图像。
4.如权利要求3所述的图像采集过程中实现自适应屏幕旋转的系统,其特征在于:所述图像编码模块是按照H264的编码格式进行数据压缩;所述图像流推送模块是以FLV格式,按照RTMP协议将编码后的图像数据推送至服务器端。