CN116527861A - 一种预览图像的显示方法及设备 - Google Patents
一种预览图像的显示方法及设备 Download PDFInfo
- Publication number
- CN116527861A CN116527861A CN202210080412.5A CN202210080412A CN116527861A CN 116527861 A CN116527861 A CN 116527861A CN 202210080412 A CN202210080412 A CN 202210080412A CN 116527861 A CN116527861 A CN 116527861A
- Authority
- CN
- China
- Prior art keywords
- ratio
- resolution
- display screen
- determining
- single display
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 15
- 230000009977 dual effect Effects 0.000 claims description 10
- 239000000872 buffer Substances 0.000 claims description 8
- 230000006870 function Effects 0.000 description 31
- 230000000694 effects Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000009877 rendering Methods 0.000 description 3
- 239000000969 carrier Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/332—Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
- H04N13/344—Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/139—Format conversion, e.g. of frame-rate or size
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/261—Image signal generators with monoscopic-to-stereoscopic image conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/765—Interface circuits between an apparatus for recording and another apparatus
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请涉及VR技术领域,提供一种预览图像的显示方法及设备,应用于VR设备,VR设备与相机通过USB接口连接,VR设备通过USB接口从相机获取预览图像,并根据预览图像的横纵分辨率的第一比值,与VR设备的单显示屏幕的初始横纵分辨率的第一比值的大小,确定预览图像的显示区域,使显示区域的宽高比值与第一比值一致,从而解决了预览图像显示时的失真问题;并且,根据第一比值和第二比值的大小,确定单显示屏幕的目标分辨率,使单显示屏幕的目标横纵分辨率的比值与第一比值一致,这样,当将预览图像分别绘制到目标分辨率大小的双显示屏幕上显示时,可以解决预览图像显示时的黑边问题,提升图像的显示质量。
Description
技术领域
本申请涉及虚拟现实(Virtual Reality,VR)技术领域,尤其涉及一种预览图像的显示方法及设备。
背景技术
在VR技术领域中,为使VR设备的功能更全面,可将VR设备与UVC相机通过USB接口连接,从而利用VR设备预览UVC相机采集的图像,实现3D效果。
当VR设备未安装有3D预览应用时,可采用3D托管的方式,将2D预览应用的图像显示在VR设备的左右显示屏幕上。其中,2D预览应用的分辨率与VR设备的分辨率一致。
例如,VR设备的分辨率为3840*2160(像素),假设2D预览应用为横屏显示,则2D预览应用的分辨率也为3840*2160(像素)。
目前,市面上相机的分辨率有很多种,且一个相机也可能支持多种分辨率,如果将相机采集的图像直接显示在2D预览应用上,当图像的横纵分辨率(即相机的横纵分辨率)的比值与2D预览应用的横纵分辨率(即VR设备的横纵分辨率)的比值不一致时,就会造成图像失真的现象。并且,由于托管2D预览任务的3D托管应用的分辨率是固定的,会造成将相机采集的图像显示在VR设备的屏幕中心位置,而边缘位置显示为黑色,降低了用户的沉浸式体验。
发明内容
本申请实施例提供了一种预览图像的显示方法及设备,用以解决VR设备显示预览图像时的失真现象,提高预览图像的真实性。
一方面,本申请实施例提供一种预览图像的显示方法,应用于VR设备,所述VR设备与相机通过USB接口连接,包括:
通过所述USB接口,从所述相机获取预览图像,并确定所述预览图像的横纵分辨率的第一比值;
确定所述VR设备的单显示屏幕的初始横纵分辨率的第二比值;
根据所述第一比值和所述第二比值的大小,确定所述预览图像的显示区域;
根据所述第一比值和所述第二比值的大小,确定所述单显示屏幕的目标分辨率;
从所述显示区域中获取所述预览图像的纹理数据,并将所述纹理数据分别绘制到所述目标分辨率大小的双显示屏幕上显示。
另一方面,本申请实施例提供一种VR设备,包括处理器、存储器、USB接口;所述USB接口、所述存储器与所述处理器通过总线连接;
所述存储器存储有计算机程序,所述处理器根据所述计算机程序执行以下操作:
通过所述USB接口,从相机获取预览图像,并确定所述预览图像的横纵分辨率的第一比值;
确定所述VR设备的单显示屏幕的初始横纵分辨率的第二比值;
根据所述第一比值和所述第二比值的大小,确定所述预览图像的显示区域;
根据所述第一比值和所述第二比值的大小,确定所述单显示屏幕的目标分辨率;
从所述显示区域中获取所述预览图像的纹理数据,并将所述纹理数据分别绘制到所述目标分辨率大小的双显示屏幕上显示。
另一方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行本申请实施例提供的预览图像的显示方法。
本申请的上述实施例中,VR设备通过USB接口,从相机获取预览图像,并根据预览图像的横纵分辨率的第一比值,与VR设备的单显示屏幕的初始横纵分辨率的第一比值的大小,确定预览图像的显示区域,使显示区域的宽高比值与第一比值一致,从而解决了预览图像显示时的失真问题;并且,根据第一比值和第二比值的大小,确定单显示屏幕的目标分辨率,使单显示屏幕的目标横纵分辨率的比值与第一比值一致,这样,当将预览图像分别绘制到目标分辨率大小的双显示屏幕上显示时,可以解决预览图像显示时的黑边问题,提升图像的显示质量。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示例性示出了本申请的实施例提供的图像失真示意图;
图2示例性示出了本申请的实施例提供的图像黑边示意图;
图3示例性示出了本申请的实施例提供的应用场景示意图;
图4示例性示出了本申请的实施例提供的预览图像的显示方法流程图;
图5示例性示出了本申请的实施例提供的预览图像的显示区域的确定方法流程图;
图6示例性示出了本申请的实施例提供的解决预览图像失真的效果图;
图7示例性示出了本申请的实施例提供的确定VR设备的显示屏幕的目标分辨率的方法流程图;
图8示例性示出了本申请的实施例提供的解决预览图像黑边问题的效果图;
图9示例性示出了本申请的实施例提供的安卓平台下解决预览图像失真的底层框架图;
图10示例性示出了本申请的实施例提供的基于AnativeWindow显示预览图像的方法流程图;
图11示例性示出了本申请的实施例提供的基于OpenGL ES API绘制显示区域的方法流程图;
图12示例性示出了本申请的实施例提供的VR设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面对本申请实施例中的名词给出解释说明。
UVC:是USB Video Class的缩写,即USB视频类,是一种为USB视频捕获设备(本申请实施例中指相机)定义的协议标准。
下面对本申请实施例的设计思想进行概述。
在开发VR设备上的2D预览应用时,默认情况下,2D预览应用的视口被设置为占据整个矩形窗口的全部像素,使视口大小和窗口大小相同,即预览应用的分辨率与VR设备的分辨率一致。也就是说,目前VR场景下对2D预览应用进行3D托管时,2D预览应用的显示面板大小是固定的,托管前无论2D预览应用的分辨率多大,预览的图像都会被直接全屏显示在VR设备的显示屏幕上。这样,当通过2D预览应用预览图像时,如果图像的横纵分辨率的比值和VR设备的横纵分辨率的比值不一致时,例如,VR设备的分辨率为3840*2160(像素),横纵分辨率的比值为16∶9,图像的分辨率为640*480(像素),横纵分辨率的比值为4∶3,假设预览应用设置为横屏显示,则图像会占满整个窗口进行显示,人眼的视觉效果就像图像被压扁了,造成图像的失真,如图1所示。托管后,如果保持图像横纵分辨率的比值进行不失真的显示,图像会位于VR设备屏幕的中心位置,边缘区域显示为黑色,如图2所示,降低了用户的沉浸式体验。
鉴于此,本申请实施例提供了一种预览图像的显示方法及设备,该方法根据图像的横纵分辨率的比值,绘制2D预览应用的显示区域,使显示区域的宽高比值与图像的横纵分辨率的比值一致,从而解决了通过VR设备预览UVC相机采集的图像时,图像存在失真的问题,保证用户通过VR设备预览图像时,能够看到真实的图像。由于VR设备的显示屏幕是虚拟的,用户无法真实看到,因此,通过3D应用对2D预览应用显示的图像进行3D托管时,可根据图像的分辨率设置3D应用的分辨率(即设置VR设备显示屏幕的分辨率),使其横纵分辨率的比值与图像的横纵分辨率的比值一致,从而解决黑边问题,提升用户的沉浸式体验。
参见图3,为本申请实施例提供的应用场景示意图,如图3示出的,相机100支持UVC协议,与VR设备200通过USB接口有线连接,并且,通过USB接口,VR设备可以获取相机采集的图像,并将获取的图像渲染在左、右显示屏幕上进行3D预览。
如图3未示出的,VR设备中安装有2D预览应用和3D托管应用。其中,2D预览应用可以确定预览图像的显示区域,并以2D的效果显示预览图像。3D托管应用用于托管2D预览应用显示的预览图像,也就是说,3D托管应用以3D托管的方式,将2D预览应用的显示的图像,已分屏的方式,显示在VR设备的双显示屏幕上,从而以3D效果显示预览图像,提升用户的沉浸式体验。
需要说明的是,图3的预览方式仅是一种示例,可选的,还可以将图像显示上、下显示屏幕上进行3D预览。
在本申请的实施例中,2D预览应用也称为第一2D应用,3D托管应用也称为第二3D应用。
基于上述应用场景,图4为本申请实施例提供的一种预览图像的显示方法流程图,该流程由VR设备执行,主要包括以下几步:
S401:通过USB接口,从相机获取预览图像,并确定预览图像的横纵分辨率的第一比值。
在本申请的实施例中,VR设备与相机通过USB接口连接,通过USB接口,VR设备从相机中获取预览图像,并经VR设备上的第一2D应用进行显示,这样,用户可以通过VR设备预览相机中的图像,从而扩展了VR设备的预览功能。
可选的,当确定预览图像的横纵分辨率的第一比值后,可将第一比值存入系统中,以便在后续进行3D托管时直接从系统中读取。
在S401中,假设预览图像的横向分辨率为W1纵向分辨率为H1,则第一比值R1=W1/H1。
S402:确定VR设备的单显示屏幕的初始横纵分辨率的第二比值。
在VR场景中,为了实现3D效果,VR设备会有两个显示屏幕,这两个显示屏幕都是虚拟的,用户不可见。一般的,这两个显示屏幕的初始分辨率大小相同,均等于VR设备的分辨率。因此,在S402中,在确定第二比值时,可根据一个显示屏幕的初始分辨率确定即可。
具体的,假设单显示屏幕的初始横向分辨率为W2,初始纵向分辨率为H2,则第二比值R2=W2/H2。
S403:根据第一比值和第二比值的大小,确定预览图像的显示区域。
在一种可选的实施方式中,VR设备上安装有第一2D应用,该应用通过比较第一比值和第二比值,来确定预览图像的显示区域,具体参见图5:
S4031:确定第一比值是否等于第二比值,若是,执行S4032,否则,执行S4033。
当第一比值等于第二比值时,表明通过第一2D应用将预览图像全屏显示在VR设备的显示屏幕上时,预览图像不会失真,因此,无需调整第一2D应用的显示区域;当第一比值不等于第二比值时,表明通过第一2D应用将预览图像全屏显示在VR设备的显示屏幕上时,预览图像会失真,因此,需要调整第一2D应用的显示区域。
S4032:确定显示区域的宽高等于单显示屏幕的初始分辨率。
假设显示区域的宽度记为W,高度记为H,当R1=R2时,确定显示区域的宽度W=W2,高度H=H2。
S4033:确定第一比值是否大于第二比值,若是,执行S4034,否则,执行S4035。
当第一比值大于第二比值时,表明通过第一2D应用将预览图像全屏显示在VR设备的显示屏幕上时,预览图像被纵向拉伸,存在图像失真;当第一比值小于等于第二比值时,表明通过第一2D应用将预览图像全屏显示在VR设备的显示屏幕上时,预览图像被横向拉伸,存在图像失真。
S4034:根据单显示屏幕的初始横向分辨率,确定显示区域的宽度,并根据单显示屏幕的初始横向分辨率和第一比值,确定显示区域的高度。
当第一比值大于第二比值时,预览图像被纵向拉伸,为了解决图像失真,在S4034中,确定显示区域的宽度等于单显示屏幕的初始横向分辨率,即W=W2,确定显示区域的高度等于单显示屏幕的初始横向分辨率与第一比值的商,即H=W2/R1。
在S4034中,通过上述确定方式,使得显示区域的宽高比值和第一比值一致,从而解决了预览图像的失真问题。
可选的,当第一比值大于第二比值时,显示区域的宽高不等于显示屏幕的分辨率,因此,为了提高预览图像的显示效果,需要调整显示区域的位置,令预览图像居中显示。
具体实施时,可根据单显示屏幕的初始纵向分辨率和显示区域的高度,确定显示区域的纵向起始位置,其中,纵向起始位置的确定公式如下:
其中,p0表示显示区域的横向起始位置,W2表示单显示屏幕的初始横向分辨率,R1表示第一比值,W表示显示区域的宽度。
S4035:根据单显示屏幕的纵向分辨率,确定显示区域的高度,并根据单显示屏幕的纵向分辨率和第一比值,确定显示区域的宽度。
当第一比值小于等于第二比值时,预览图像被横向拉伸,为了解决图像失真,在S4035中,确定显示区域的高度等于单显示屏幕的纵向分辨率,即H=H2,确定显示区域的高度等于单显示屏幕的纵向分辨率与第一比值的乘积,即W=H2*R1。
在S4035中,通过上述确定方式,使得显示区域的宽高比值和第一比值一致,从而解决了预览图像的失真问题。
可选的,当第一比值小于等于第二比值时,显示区域的宽高不等于显示屏幕的分辨率,因此,为了提高预览图像的显示效果,需要调整显示区域的位置,令预览图像居中显示。
具体实施时,可根据单显示屏幕的初始横向分辨率和显示区域的宽度,确定显示区域的横向起始位置,其中,纵向起始位置的确定公式如下:
其中,p1表示显示区域的纵向起始位置,H2表示单显示屏幕的初始纵向分辨率,R1表示第一比值,H表示显示区域的高度。
参见图6,为解决图像失真后的效果图,其中,预览图像的分辨率为640*480(像素),第一比值为4∶3,VR设备的初始分辨率为3840*2160(像素),第二比值为16∶9,假设第一2D应用设置为横屏显示,则按照上述方式确定的显示区域显示预览图像时,在第一比值和第二比值不一致的情况下,预览图像未失真。
由图6可知,在第一比值和第二比值不一致的情况下,当第一2D应用不失真的显示预览应用时,边缘位置存在黑边。为了解决黑边问题,可通过S404调整显示屏幕的初始分辨率。
S404:根据第一比值和第二比值的大小,确定单显示屏幕的目标分辨率。
在一种可选的实施方式中,VR设备上安装有第二3D应用,该应用可以以3D托管的方式显示第一2D应用显示的预览图像,从而实现3D效果,提升用户的沉浸式体验。
在S404中,通过比较第一比值和第二比值,来单显示屏幕的目标分辨率,即确定第二3D应用的分辨率,具体参见图7:
S4041:确定第一比值是否等于第二比值,若是,执行S4042,否则,执行S4043。
当第一比值等于第二比值时,表明预览图像的横向分辨率的比值与VR设备的显示屏幕的分辨率的比值是一致的,不会出现黑边问题,无需调整VR设备的显示屏幕的分辨率;当第一比值不等于第二比值时,表明预览图像的横向分辨率的比值与VR设备的显示屏幕的分辨率的比值是不一致的,会出现黑边问题,需要调整VR设备的显示屏幕的分辨率。
S4042:确定单显示屏幕的目标分辨率为初始分辨率。
当第一比值等于第二比值时,无需调整VR设备的显示屏幕的分辨率,VR设备的单显示屏幕的目标横向分辨率等于初始横向分辨率,即W′2=W2,VR设备的单显示屏幕的目标纵向分辨率等于初始纵向分辨率,即H′2=H2。
S4043:根据单显示屏幕的初始分辨率和第一比值,确定单显示屏幕的目标分辨率。
当第一比值不等于第二比值时,需要调整VR设备的单显示屏幕的初始横向分辨率或者初始纵向分辨率以解决黑边问题。
在一种可选的实施方式中,可以固定VR设备的显示屏幕的横向分辨率,调整VR设备的显示屏幕的纵向分辨率,即确定单显示屏幕的目标横向分辨率为初始横向分辨率,并根据单显示屏幕的初始横向分辨率和第一比值,确定所述单显示屏幕的目标纵向分辨率。
具体实施时,确定单显示屏幕的目标横向分辨率为初始横向分辨率,即W′2=W2,并将单显示屏幕的初始横向分辨率与第一比值的商,作为单显示屏幕的目标纵向分辨率,即H′2=W2/R1。
在一种可选的实施方式中,可以固定VR设备的显示屏幕的纵向分辨率,调整VR设备的显示屏幕的横向分辨率,即确定单显示屏幕的目标纵向分辨率为初始纵向分辨率,并根据单显示屏幕的初始纵向分辨率和第一比值,确定所述单显示屏幕的目标横向分辨率。
具体实施时,确定单显示屏幕的目标纵向分辨率为初始纵向分辨率,即H′2=H2,并将单显示屏幕的初始纵向分辨率与第一比值的乘积,作为单显示屏幕的目标横向分辨率,即W′2=H2*R1。
S405:从显示区域中获取预览图像的纹理数据,并将纹理数据分别绘制到目标分辨率大小的双显示屏幕上显示。
在本申请的实施例中,VR设备的两个显示屏幕是一样的,确定单显示屏幕的目标分辨率后,另一显示屏幕的目标分辨率也就确定了。因此,当调整好VR设备的单显示屏幕的目标分辨率(即第二3D应用的分辨率)后,托管预览图像之前,绘制VR设备的两个虚拟的显示屏幕,作为后续预览图像的显示载体。
具体的,VR设备确定待显示的虚拟现实场景,并将虚拟现实场景以分屏方式写入帧缓存中,从帧缓存中获取虚拟现实场景,绘制双显示屏幕。其中,可采用OpenGL函数虚拟现实场景的写入方式可通过OpenGL函数实现。可选的,当分屏方式为左右分屏,则绘制的双显示屏幕包括左显示屏幕和右显示屏幕;分屏方式为上下分屏,则绘制的双显示屏幕包括上显示屏幕和下显示屏幕。
绘制好双显示屏幕后,在S405中,可通过第二3D应用对第一2D应用显示的预览图像进行3D托管,以实现3D预览效果。具体的,VR设备从第一2D应用确定的显示区域中,获取预览图像的纹理数据,并将纹理数据分别绘制到目标分辨率大小的双显示屏幕上显示。
在本申请的实施例中,采用3D托管的方式显示预览图像时,通过预览图像的横纵分辨率,调整VR设备的显示屏幕的横纵分辨率,即调整用于托管第一2D应用显示的预览图像的第二3D应用的分辨率,使VR设备显示屏幕的目标横纵分辨率的比值与预览图像的横纵分辨率的比值一致,从而解决黑边问题,提升用户的沉浸式体验。
参见图8,为VR设备采用本申请实施例提供的方法单显示屏幕显示的预览图像的效果图,从图8的效果可知,本申请实施例提供的方法既可以解决图像失真问题,又可以解决显示区域黑边问题。
在本申请的实施例中,当VR设备使用的为安卓(Android)系统时,在Android平台下可基于AnativeWindow解决预览图像的失真问题,实现流程分为Java层和Native层,参见图9。其中,Java层使用的为Java语言,Native层使用的为C/C++语言。Java层实际上是利用SurfaceView将Camera图像渲染到Surface上,而Native层可以通过ANativeWindow来渲染Camera图像。具体的,首先,Java层将Surface传递给Native层;然后,通过ANativeWindow_fromSurface接口,获取到ANativeWindow对象;最后,使用EGL显示camera图像。
其中,EGL显示camera图像的过程参见图10:
S1001:获取EGLDisplay对象。
通过eglGetDisplay()函数,获取EGLDisplay对象。其中,eglGetDisplay()函数可以加载OpenGL ES,获取OpenGL ES的默认主屏幕。
S1002:初始化与EGLDisplay对象之间的连接。
通过eglInitialize()函数,初始化屏幕EGLDisplay对象和着色器缓存。
S1003:获取EGL Config对象。
通过eglChooseConfig()函数,从EGLConfig对象中自动筛选出最合适的配置。
S1004:创建EGLContext实例。
通过eglCreateContext()函数,创建当前OpenGL ES的上下文内容。
S1005:创建EGLSurface实例。
通过glCreateWindowSurface()函数,从Surface中创建一个Opengl ES的Surface。
S1006:获取VR设备的单显示屏幕的分辨率。
通过eglQuerySurface()函数,获取VR设备的单显示屏幕的分辨率。
S1007:获取相机采集的预览图像的分辨率。
S1008:根据预览图像的横纵分辨率的比值和单显示屏幕的横纵分辨率的比值,计算不失真显示预览图像时对应的显示区域的宽高。
S1009:根据计算的显示区域的宽高,绘制显示区域。
通过glViewport()函数,绘制显示区域。其中,glViewport()函数在默认情况下,第一2D应用的视口被设置为占据VR设备的整个窗口,即视口大小和窗口大小相同。在VR设备中,其窗口大小与VR设备的显示屏幕的分辨率大小一致。当不一致时,为了使预览图像不失真的显示,可通过glviewport()函数绘制一个小于窗口的显示区域,glviewport()函数在VR设备的窗口中定义一个像素矩形,并将图像纹理映射到这个矩形中。
具体的,glViewport函数原型为glViewport(GLint x,GLint y,GLsizei width,GLsizei height),x,y以像素为单位,指定了窗口的左下角位置,width,height表示视口矩形的宽度和高度,根据预览图像的分辨率,实时重绘相应的视口。其中,视口记为预览图像的显示区域,视口大小确定方法具体参见图5,在此不再重复。
S1010:连接EGLContext实例和EGLSurface实例。
把上下文内容(context)、显示屏幕(display)和渲染面(Surface)的线程关联起来。
S1011:使用OpenGL ES API绘制图形。
通过gl_*()函数,调用OpenGL ES本身特性,绘制顶点,纹理等。具体绘制过程参见图11。
S1012:切换Front Buffer和Back Buffer进行显示。
通过eglSwapBuffer()函数,交换绘制好的缓冲区。
参见图11,为通过OpenGL ES API绘制显示区域的过程,主要包括以下几步:
S1101:创建纹理对象。
该步骤中,通过glGenTextures()函数,创建纹理对象。
S1102:绑定纹理。
该步骤中,通过glBindTexture()函数,将纹理对象与VR设备的屏幕进行绑定。
S1103:定义矩阵,确定VR设备的屏幕窗口与预览图像的纹理坐标间的对应关系。
该步骤可通过gTriangleVertices()函数实现。
S1104:设置渲染时索引值为index的顶点属性数组的数据格式和位置。
该步骤可通过glVertexAttribPointer()函数实现。
S1105:设置纹理坐标的参数。
该步骤可通过glTexParameteri()函数实现。
S1106:传输相机采集的预览图像。
该步骤可通过glTexImage2D()函数实现。
S1107:绑定到激活的绑定点。
该步骤可通过glUniform1i()函数实现,其中,glUniform1i()函数用于定义采样器对应的纹理单元,纹理单元对应的顶点着色器信息和片源着色器信息已经提前定义好。
S1108:在显示区域绘制预览图像。
该步骤可通过glDrawArrays()函数实现。
基于相同的技术构思,本申请实施例提供一种VR设备,该VR设备可以执行上述实施例提供的预览图像的显示方法,且能达到同样的技术效果,在此不再赘述。
参见图12,该VR设备包括处理器1201、存储器1202、USB接口1203,USB接口1203、存储器1202与处理器1201通过总线1204连接,存储器1202存储有计算机程序指令,处理器1201根据存储器1202存储的计算机程序指令,执行以下操作:
通过USB接口1203,从相机获取预览图像,并确定预览图像的横纵分辨率的第一比值;
确定VR设备的单显示屏幕的初始横纵分辨率的第二比值;
根据第一比值和第二比值的大小,确定预览图像的显示区域;
根据第一比值和第二比值的大小,确定单显示屏幕的目标分辨率;
从显示区域中获取预览图像的纹理数据,并将纹理数据分别绘制到目标分辨率大小的双显示屏幕上显示。
可选的,处理器1201根据第一比值和第二比值的大小,确定单显示屏幕的目标分辨率,具体操作为:
当第一比值等于第二比值时,确定单显示屏幕的目标分辨率为初始分辨率;
当第一比值不等于第二比值时,根据单显示屏幕的初始分辨率和第一比值,确定单显示屏幕的目标分辨率。
可选的,当第一比值不等于第二比值时,处理器1201根据单显示屏幕的初始分辨率和第一比值,确定单显示屏幕的目标分辨率,具体操作为:
确定单显示屏幕的目标横向分辨率为初始横向分辨率,并根据单显示屏幕的初始横向分辨率和第一比值,确定单显示屏幕的目标纵向分辨率;或者
确定单显示屏幕的目标纵向分辨率为初始纵向分辨率,并根据单显示屏幕的初始纵向分辨率和第一比值,确定单显示屏幕的目标横向分辨率。
可选的,处理器1201根据第一比值和第二比值的大小,确定预览图像的显示区域,具体操作为:
当第一比值等于第二比值时,确定显示区域的宽高等于单显示屏幕的初始分辨率;
当第一比值大于第二比值时,根据单显示屏幕的初始横向分辨率,确定显示区域的宽度,并根据单显示屏幕的初始横向分辨率和第一比值,确定显示区域的高度;
当第一比值小于等于第二比值时,根据单显示屏幕的初始纵向分辨率,确定显示区域的高度,并根据单显示屏幕的初始纵向分辨率和第一比值,确定显示区域的宽度。
可选的,处理器1201还执行:
当第一比值大于第二比值时,根据单显示屏幕的初始纵向分辨率和显示区域的高度,确定显示区域的纵向起始位置;
当第一比值小于等于第二比值时,根据单显示屏幕的初始横向分辨率和显示区域的宽度,确定显示区域的横向起始位置。
可选的,在确定单显示屏幕的将纹理数据分别绘制到目标分辨率大小的双显示屏幕上显示之前,处理器1201还执行:
确定待显示的虚拟现实场景,并将虚拟现实场景以分屏方式写入帧缓存中;
从帧缓存中获取虚拟现实场景,绘制双显示屏幕;双显示屏幕包括左显示屏幕和右显示屏幕,或者,双显示屏幕包括上显示屏幕和下显示屏幕。
可选的,VR设备安装有第一2D应用和第二3D应用,第一2D应用用于确定预览图像的显示区域,第二3D应用用于托管第一2D应用显示的预览图像。
需要说明的是,图12仅是VR设备实现本申请实施例提供的预览图像的显示方法的必要硬件,可选的,该VR设备还包括如左、右眼显示镜片,音视频处理器,麦克风等常规显示设备的硬件。
需要说明的是,本申请实施例上述涉及的处理器可以是中央处理器(centralprocessing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。其中,所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
本申请实施例还提供一种计算机可读存储介质,用于存储一些指令,这些指令被执行时,可以完成前述实施例的方法。
本申请实施例还提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行前述实施例的方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种预览图像的显示方法,其特征在于,应用于虚拟现实VR设备,所述VR设备与相机通过USB接口连接,所述方法包括:
通过所述USB接口,从所述相机获取预览图像,并确定所述预览图像的横纵分辨率的第一比值;
确定所述VR设备的单显示屏幕的初始横纵分辨率的第二比值;
根据所述第一比值和所述第二比值的大小,确定所述预览图像的显示区域;
根据所述第一比值和所述第二比值的大小,确定所述单显示屏幕的目标分辨率;
从所述显示区域中获取所述预览图像的纹理数据,并将所述纹理数据分别绘制到所述目标分辨率大小的双显示屏幕上显示。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一比值和所述第二比值的大小,确定所述单显示屏幕的目标分辨率,包括:
当所述第一比值等于所述第二比值时,确定所述单显示屏幕的目标分辨率为初始分辨率;
当所述第一比值不等于所述第二比值时,根据所述单显示屏幕的初始分辨率和所述第一比值,确定所述单显示屏幕的目标分辨率。
3.如权利要求2所述的方法,其特征在于,当所述第一比值不等于所述第二比值时,所述根据所述单显示屏幕的初始分辨率和所述第一比值,确定所述单显示屏幕的目标分辨率,包括:
确定所述单显示屏幕的目标横向分辨率为初始横向分辨率,并根据所述单显示屏幕的初始横向分辨率和所述第一比值,确定所述单显示屏幕的目标纵向分辨率;或者
确定所述单显示屏幕的目标纵向分辨率为初始纵向分辨率,并根据所述单显示屏幕的初始纵向分辨率和所述第一比值,确定所述单显示屏幕的目标横向分辨率。
4.如权利要求1所述的方法,其特征在于,所述根据所述第一比值和所述第二比值的大小,确定所述预览图像的显示区域,包括:
当所述第一比值等于所述第二比值时,确定所述显示区域的宽高等于所述单显示屏幕的初始分辨率;
当所述第一比值大于所述第二比值时,根据所述单显示屏幕的初始横向分辨率,确定所述显示区域的宽度,并根据所述单显示屏幕的初始横向分辨率和所述第一比值,确定所述显示区域的高度;
当所述第一比值小于等于所述第二比值时,根据所述单显示屏幕的初始纵向分辨率,确定所述显示区域的高度,并根据所述单显示屏幕的初始纵向分辨率和所述第一比值,确定所述显示区域的宽度。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当所述第一比值大于所述第二比值时,根据所述单显示屏幕的初始纵向分辨率和所述显示区域的高度,确定所述显示区域的纵向起始位置;
当所述第一比值小于等于所述第二比值时,根据所述单显示屏幕的初始横向分辨率和所述显示区域的宽度,确定所述显示区域的横向起始位置。
6.如权利要求1-5中任一项所述的方法,其特征在于,在确定所述单显示屏幕的将所述纹理数据分别绘制到所述目标分辨率大小的双显示屏幕上显示之前,所述方法还包括:
确定待显示的虚拟现实场景,并将所述虚拟现实场景以分屏方式写入帧缓存中;
从所述帧缓存中获取所述虚拟现实场景,绘制双显示屏幕;所述双显示屏幕包括左显示屏幕和右显示屏幕,或者,所述双显示屏幕包括上显示屏幕和下显示屏幕。
7.如权利要求1-5中任一项所述的方法,其特征在于,所述VR设备安装有第一2D应用和第二3D应用,所述第一2D应用用于确定所述预览图像的显示区域,所述第二3D应用用于托管所述第一2D应用显示的预览图像。
8.一种虚拟现实VR设备,其特征在于,包括处理器、存储器、USB接口;所述USB接口、所述存储器与所述处理器通过总线连接;
所述存储器存储有计算机程序,所述处理器根据所述计算机程序执行以下操作:
通过所述USB接口,从相机获取预览图像,并确定所述预览图像的横纵分辨率的第一比值;
确定所述VR设备的单显示屏幕的初始横纵分辨率的第二比值;
根据所述第一比值和所述第二比值的大小,确定所述预览图像的显示区域;
根据所述第一比值和所述第二比值的大小,确定所述单显示屏幕的目标分辨率;
从所述显示区域中获取所述预览图像的纹理数据,并将所述纹理数据分别绘制到所述目标分辨率大小的双显示屏幕上显示。
9.如权利要求8所述的VR设备,其特征在于,所述处理器根据所述第一比值和所述第二比值的大小,确定所述单显示屏幕的目标分辨率,具体操作为:
当所述第一比值等于所述第二比值时,确定所述单显示屏幕的目标分辨率为初始分辨率;
当所述第一比值不等于所述第二比值时,确定所述单显示屏幕的目标横向分辨率为初始横向分辨率,并根据所述单显示屏幕的初始横向分辨率和所述第一比值,确定所述单显示屏幕的目标纵向分辨率。
10.如权利要求8所述的VR设备,其特征在于,所述处理器根据所述第一比值和所述第二比值的大小,确定所述预览图像的显示区域,具体操作为:
当所述第一比值等于所述第二比值时,确定所述显示区域的宽高等于所述单显示屏幕的分辨率;
当所述第一比值大于所述第二比值时,根据所述单显示屏幕的横向分辨率和所述第一比值,确定所述显示区域的宽度,并根据所述单显示屏幕的横向分辨率和所述显示区域的宽度,确定所述显示区域的横向起始位置;
当所述第一比值小于等于所述第二比值时,所述根据所述单显示屏幕的纵向分辨率和所述第一比值,确定所述显示区域的高度,并根据所述单显示屏幕的纵向分辨率和所述显示区域的高度,确定所述显示区域的纵向起始位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210080412.5A CN116527861A (zh) | 2022-01-24 | 2022-01-24 | 一种预览图像的显示方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210080412.5A CN116527861A (zh) | 2022-01-24 | 2022-01-24 | 一种预览图像的显示方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116527861A true CN116527861A (zh) | 2023-08-01 |
Family
ID=87406893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210080412.5A Pending CN116527861A (zh) | 2022-01-24 | 2022-01-24 | 一种预览图像的显示方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116527861A (zh) |
-
2022
- 2022-01-24 CN CN202210080412.5A patent/CN116527861A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102278932B1 (ko) | 애플리케이션 프로그램 처리 방법 및 단말 디바이스 | |
US10134106B2 (en) | Method and device for selective display refresh | |
CN110377264B (zh) | 图层合成方法、装置、电子设备及存储介质 | |
WO2017113488A1 (zh) | 一种虚拟现实设备中显示2d应用界面的方法和装置 | |
CN103797787B (zh) | 图像处理方法和图像处理设备 | |
JP2020533710A (ja) | 画像ステッチング方法および装置、記憶媒体 | |
WO2004107764A1 (ja) | 画像表示装置及びプログラム | |
CN112165632A (zh) | 视频处理方法、装置及设备 | |
JP2008276410A (ja) | 画像処理装置及び方法 | |
EP3822757A1 (en) | Method and apparatus for setting background of ui control | |
CA2417250C (en) | Scaling images | |
CN108765582B (zh) | 一种全景图片显示方法及设备 | |
CN113469883B (zh) | 动态分辨率的渲染方法、装置、电子设备及可读存储介质 | |
US9143754B2 (en) | Systems and methods for modifying stereoscopic images | |
CN112650460B (zh) | 媒体显示方法和媒体显示装置 | |
JP6947939B2 (ja) | 画像生成装置、画像生成方法及びプログラム | |
CN116527861A (zh) | 一种预览图像的显示方法及设备 | |
CN110597577A (zh) | 一种头戴可视设备及其分屏显示方法和装置 | |
CN114697555B (zh) | 一种图像处理方法、装置、设备及存储介质 | |
TW484113B (en) | Method and apparatus for ensuring backward compatibility in a bucket rendering system | |
CN113791857B (zh) | Linux系统中应用窗口背景模糊处理方法及装置 | |
CN113093903B (zh) | 一种图像显示方法及显示设备 | |
CN109089150B (zh) | 图像处理方法及电子设备 | |
CN112565623A (zh) | 一种动态图像显示系统 | |
CN113741836B (zh) | 媒体处理方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |