CN113992854B - 图像预览方法、装置、电子设备和计算机可读存储介质 - Google Patents
图像预览方法、装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113992854B CN113992854B CN202111274940.6A CN202111274940A CN113992854B CN 113992854 B CN113992854 B CN 113992854B CN 202111274940 A CN202111274940 A CN 202111274940A CN 113992854 B CN113992854 B CN 113992854B
- Authority
- CN
- China
- Prior art keywords
- preview
- image
- cache queue
- application program
- party application
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 90
- 230000004044 response Effects 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000003384 imaging method Methods 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 2
- 230000003796 beauty Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer 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
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/67—Focus control based on electronic image sensor signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/617—Upgrading or updating of programs or applications for camera control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/62—Control of parameters via user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/63—Control of cameras or camera modules by using electronic viewfinders
- H04N23/631—Graphical user interfaces [GUI] specially adapted for controlling image capture or setting capture parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/64—Computer-aided capture of images, e.g. transfer from script file into camera, check of taken image quality, advice or proposal for image composition or decision on when to take image
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Studio Devices (AREA)
Abstract
图像预览方法、装置、电子设备、计算机可读存储介质,所述图像预览方法,应用于相机能力开放单元,所述方法包括:接收第三方应用程序所生成的携带第一缓存队列的第一预览请求;响应于所述第一预览请求,从第二缓存队列获取元数据;对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。在本申请实施例中,相机能力开放单元通过接收外部输入的第一缓存队列,可以将处理生成的预览图像存储至该第一缓存队列中,第三方应用程序即可从第一缓存队列中获取预览图像,从而提供了一种第三方应用程序能够灵活使用相机能力开放单元中的图像处理功能的预览方法。
Description
技术领域
本申请涉及图像预览,特别是涉及一种图像预览方法、装置、电子设备和计算机可读存储介质。
背景技术
随着图像处理技术的发展,相机能力开放单元可以帮助应用程序从终端的底层调用相机的算法,从而提高应用程序的图像处理能力。然而,相机能力开放单元的部分回调接口未对第三方应用程序开放,导致第三方应用程序无法使用相机能力开放单元的全部图像处理功能。
发明内容
本申请实施例提供了一种图像预览方法、装置、电子设备、计算机可读存储介质,可以在不增加相机能力开放单元所需配置的回调接口的数量的前提下,使第三方应用程序能够灵活使用相机能力开放单元中的图像处理功能。
一种图像预览方法,应用于相机能力开放单元,所述方法包括:
接收第三方应用程序所生成的携带第一缓存队列的第一预览请求;
响应于所述第一预览请求,从第二缓存队列获取元数据;
对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。
一种图像预览方法,应用于第三方应用程序,所述方法包括:
响应于预览触发操作,创建第一缓存队列并生成第一预览请求;
发送携带所述第一缓存队列的第一预览请求,以指示相机能力开放单元生成预览图像;
从所述第一缓存队列获取所述预览图像。
一种图像预览装置,包括:
请求接收模块,用于接收第三方应用程序所生成的携带第一缓存队列的第一预览请求;
元数据获取模块,用于响应于所述第一预览请求,从第二缓存队列获取元数据;
预览生成模块,用于对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。
一种图像预览装置,包括:
请求生成模块,用于响应于预览触发操作,创建第一缓存队列并生成第一预览请求;
请求发送模块,用于发送携带所述第一缓存队列的第一预览请求,以指示相机能力开放单元生成预览图像;
预览获取模块,用于从所述第一缓存队列获取相机能力开放单元响应于所述第一预览请求生成的预览图像。
一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述的图像预览方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的图像预览方法的步骤。
上述图像预览方法、装置、电子设备、计算机可读存储介质,所述图像预览方法,应用于相机能力开放单元,所述方法包括:接收第三方应用程序所生成的携带第一缓存队列的第一预览请求;响应于所述第一预览请求,从第二缓存队列获取元数据;对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。在本申请实施例中,相机能力开放单元通过接收外部输入的第一缓存队列,可以将处理生成的预览图像存储至该第一缓存队列中,第三方应用程序即可从第一缓存队列中获取预览图像,从而克服了相机能力开放单元内部的第二缓存队列未对第三方应用程序开放接口,导致第三方应用程序无法直接从第二缓存队列获取数据的问题。即,提供了一种第三方应用程序能够灵活使用相机能力开放单元中的图像处理功能的预览方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一实施例的图像预览方法的流程图;
图2为一实施例的步骤104的子流程图;
图3为一实施例的系统应用程序的图像预览方法的流程图;
图4为另一实施例的图像预览方法的流程图;
图5为又一实施例的图像预览方法的流程图;
图6为一实施例的图像预览装置的结构框图;
图7为另一实施例的图像预览装置的结构框图;
图8为一个实施例中电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一预览请求称为第二预览请求,且类似地,可将第二预览请求称为第一预览请求。第一预览请求和第二预览请求两者都是预览请求,但其不是同一预览请求。
此外,术语“第一”、“第二”仅用于描述目地,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。在本申请的描述中,“若干”的含义是至少一个,例如一个,两个等,除非另有明确具体的限定。
本申请实施例提供了一种图像预览方法,本申请实施例的图像预览方法以运行于电子设备为例进行描述。其中,电子设备包括相机能力开放单元和应用程序。相机能力开放单元被配置有多种图像处理算法,相机能力开放单元能够通过至少一种图像处理算法对接收到的图像数据进行处理。示例性地,多种图像处理算法包括但不限于美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、HDR处理和多帧处理中的至少一种。应用程序是指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。相关技术中应用程序可通过Camera2 API接入电子设备的相机功能,并通过实现和注册CameraDevice.StateCallback接收相机打开状态,通过实现和注册CameraCaptureSession.StateCallback接收会话创建状态,并通过实现和注册CameraCaptureSession.CaptureCallback接收预览/拍照请求状态和数据,若通过ImageReader接收数据还要ImageReader.OnImageAvailableListener的支持。因此,相关技术中的接口回调方式较为复杂,尤其是需要适配于不同的平台架构时,适配的复杂度更高。
因此,可以通过接入相机能力开放单元,并配置API接口的方式为应用程序提供更加简便的功能调用,并减少总的接口数量。本申请实施例中的应用程序包括第三方应用程序,第三方应用程序是指电子设备非内置的、在用户的使用过程中下载安装的应用程序。一般地,系统应用程序具备调用相机能力开放单元的全部接口的权限,而第三方应用程序只能调用相机能力开放单元的部分接口。具体地,第三方应用程序和系统应用程序都具有封装的CameraStateCallback、CameraRecordingCallback、CameraPreviewCallback和CameraPictureCallback接口的调用权限。其中,第三方应用程序可以回调CameraStateCallback接口的+onCameraOpen()、+CameraClosed()、+onCameraDisconnect()、+onCameraErrer()、+onSessionConfigured()、+onSessionConfigureFail()和+onSessionClosed()等全部状态。第三方应用程序可以回调CameraRecordingCallback接口的+onRecordingResult()等全部状态。第三方应用程序可以回调CameraPreviewCallback接口的+onPreviewMetaReceived()状态,且系统应用程序可以回调CameraPreviewCallback接口的+onPreviewReceived()、+onVideoReceived()、+onPreviewFrameReceived()和+onPreviewCaptureProgressed()状态。第三方应用程序可以回调CameraPictureCallback接口的+onCaptureShutter()、+onCaptureMetaReceived()、+onCaptureFailed()和+onImageReceived()状态,且系统应用程序可以回调CameraPictureCallback接口的+onBurstShotStart()、+onBurstShotEnd()、+onPictureCaptureProgressed()和+onPictureCaptureSequenceComplete()状态。
图1为一实施例的图像预览方法的流程图,本实施例的图像预览方法以运行于电子设备中的相机能力开放单元为例进行描述。可以理解的是,在一些可能的实施例中,图像预览方法也可以应用于服务器,或可以应用于包括电子设备和服务器的系统,并通过电子设备和服务器的交互实现,本实施例不做限定。参考图1,本实施例的图像预览方法包括步骤102至步骤106。
步骤102,接收第三方应用程序所生成的携带第一缓存队列的第一预览请求。
其中,第一预览请求是指第三方应用程序响应于用户输入的预览触发操作生成的请求。示例性地,该预览触发操作可以是用户双击电子设备的音量键的操作,也可以是用户单击交互界面上的预览图标的操作,本实施例不做限定。以第三方应用程序为“微信”为例,则“微信”触发预览功能的预览触发操作可以是在聊天对话框点击拍摄控件后,调用电子设备的相机接口。
缓存队列(Buffer Queue)可以理解为能够缓存图像及其相关数据的容器。图像的生产者生成图像及其相关数据后,可以将图像及其相关数据入列至缓存队列,图像的消费者即可从缓存队列获取上述图像及其相关数据,并进行后续的图像处理等操作。需要说明的是,对于不同的缓存队列,图像的生产者可以不同。例如,图像的生产者可以是摄像头等成像器件,也可以是具有图像处理能力的中间组件,具体可以根据数据的传输和交互过程确定。其中,图像及其相关数据可以包括图像数据和成像参数数据。图像数据可以为RAW图像数据或YUV图像数据。成像参数数据可以包括自动曝光控制AE、自动聚焦控制AF、自动白平衡控制AWB、光圈大小、快门速度和感光度光圈值等。
可选地,响应于上述预览触发操作,可以是第三方应用程序创建第一缓存队列,也可以是第三方应用程序调用其他控件创建第一缓存队列,其他控件再将创建的第一缓存队列回传至第三方应用程序。因此,本实施例不对创建第一缓存队列的创建方式进行限定,只需第三方应用程序具有上述第一缓存队列的读取权限即可。也即,第三方应用程序能够从第一缓存队列获取已缓存的图像及其相关数据。
步骤104,响应于所述第一预览请求,从第二缓存队列获取元数据。
其中,元数据(metadata)是指成像设备直接生成的、未经图像处理算法处理过的图像及其相关数据。第二缓存队列是指相机能力开放单元内部的缓存队列。在本申请实施例中,相机能力开放单元具有第一缓存队列和第二缓存队列的数据读写权限,但第二缓存队列未对第三方应用程序开放数据读取接口,也即,第三方应用程序不具有第二缓存队列的数据读取权限。
可选地,第二缓存队列可以是相机能力开放单元内部固定存在的,当接收到第一预览请求后,第二缓存队列用于缓存与第一预览请求对应的元数据,并在未接收到第一预览请求时,用于缓存其他请求对应的数据。第二缓存队列也可以是相机能力开放单元响应于第一预览请求创建的缓存队列,并可以在完成第一预览请求对应的预览操作后,对该第二缓存队列进行关闭,以开放内存空间给其他缓存队列。
步骤106,对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。
具体地,其中,相机能力开放单元通过对元数据进行前述的美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、HDR处理和多帧处理等中的至少一种,生成预览图像。预览图像的类型例如可以为YUV图像或JPEG图像。可选地,指示第三方应用程序获取预览图像的方式可以是将预览图像存储至所述第一缓存队列后,相机能力开放单元发送图像更新消息给第三方应用程序,以告知第三方应用程序生成了新的预览图像。指示第三方应用程序获取预览图像的方式也可以是第三方应用程序预先在第一缓存队列处设置监听器,当监听器监听到输入了新的预览图像时,回调第三方应用程序进行预览图像读取的操作。
在本实施例中,相机能力开放单元通过接收外部输入的第一缓存队列,可以将处理生成的预览图像存储至该第一缓存队列中。第三方应用程序即可从第一缓存队列中获取预览图像,从而克服了相机能力开放单元内部的第二缓存队列未对第三方应用程序开放接口,导致第三方应用程序无法直接从第二缓存队列获取数据的问题。即,提供了一种第三方应用程序能够灵活使用相机能力开放单元中的图像处理功能的预览方法。
图2为一实施例的步骤104的子流程图,参考图2,在本实施例中,步骤104的相应于所述第一预览请求,从第二缓存队列获取元数据,包括步骤202至步骤206。
步骤202,响应于所述第一预览请求,创建第二缓存队列。
具体地,相机能力开放单元响应于所述第一预览请求,创建内置于相机能力开放单元中的第二缓存队列。其中,第二缓存队列的长度可以与第一缓存队列的长度相同,以实现相对应的数据读取和数据写入操作。
步骤204,发送第二预览请求至硬件抽象层,以指示所述硬件抽象层响应于所述第二预览请求将元数据存储至所述第二缓存队列。
其中,硬件抽象层(Hardware Abstraction Layer,HAL)是指在具体的硬件平台上抽象出来的一个硬件接口层,该硬件接口层负责实现具体硬件平台的功能和控制,同时又为其他软件模块提供统一的API接口。在本实施例中,硬件平台包括图像传感器等成像器件,其他软件模块即是指相机能力开放单元。具体地,相机能力开放单元根据第一预览请求生成对应的第二预览请求,第二预览请求可以携带第二缓存队列,以告知硬件抽象层获取到元数据后进行数据缓存的位置。即,第一预览请求和第二预览请求的区别可以仅在于请求的收发对象不同,以及对应的缓存队列不同。具体地,相机能力开放单元在向硬件抽象层发送第二预览请求后,硬件抽象层会依次返回每一帧的元数据,并将每一帧的元数据分别缓存至第二缓存队列中的不同位置。
步骤206,从所述第二缓存队列读取所述元数据。
具体地,相机能力开放单元可以依次读取第二缓存队列中的不同位置,以分别获取每一帧的元数据。
在本实施例中,相机能力开放单元响应于第一预览请求创建第二缓存队列,即,相机能力开放单元仅在需要进行图像预览的时候创建第二缓存队列,并在不需要进行图像预览的时候关闭第二缓存队列。基于以上实施方式,可以避免第二缓存队列在空闲时占用内存空间,从而相当于增加了相机能力开放单元的有效内存空间,进而提高了相机能力开放单元的数据传输速度和数据处理能力。
在其中一个实施例中,在所述发送第二预览请求至硬件抽象层之前,图像预览方法还包括注册与所述第一缓存队列对应的第三方回调接口,所述第三方回调接口用于所述第三方应用程序从所述第一缓存队列获取所述预览图像。具体地,不同的第三方应用程序对应于不同的第三方回调接口,即,每个第三方回调接口只能对对应的第三方应用程序开放读取权限。例如,“美图秀秀”不能从“微信”对应的第三方回调接口获取第一缓存队列中的数据。基于以上实施方式,可以避免第三方应用程序的数据读取权限过大,影响电子设备的安全性。与此同时,也可以避免多个不同的第三方应用程序通过同一第三方回调接口获取数据时发生冲突,造成数据读取错误的问题。
在其中一个实施例中,所述相机能力开放单元包括业务子单元和算法处理子单元(Algo process service,APS)。其中,业务子单元与第三方应用程序连接,即,第三方应用程序可以通过业务子单元与硬件抽象层连接,以使业务子单元能够实现对不同业务请求的转发和处理。具体地,第三方应用程序可以向业务子单元发送第一预览请求。所述业务子单元接收所述第一预览请求,并响应于所述第一预览请求,创建第二缓存队列,发送第二预览请求至硬件抽象层,并从所述第二缓存队列获取元数据。硬件抽象层再根据第二预览请求对成像器件的工作进行相应的控制,从而获取需要的元数据,并将获取到的元数据存储至第二缓存队列。所述算法处理子单元配置有前述的美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、HDR处理和多帧处理中的至少一种,算法处理子单元用于通过预设的至少一种图像处理算法对所述元数据进行处理,以生成预览图像,并将所述预览图像存储至所述第一缓存队列。可选地,业务子单元还可以发送元数据至第三方应用程序,以支持第三方应用程序的峰值图、手势拍照等功能。
基于以上业务子单元和算法处理子单元的结构,在所述将所述预览图像存储至所述第一缓存队列之前,图像预览方法还包括所述业务子单元调用Java本地接口,以通过所述Java本地接口将所述第一缓存队列传输至所述算法处理子单元。其中,Java本地接口(Java Native Interface,JNI)是一个编程框架,用于使得运行在Java虚拟机上的Java程序调用或者被调用特定于本机硬件与操作系统的用其它语言(C、C++或汇编语言等)编写的程序。具体地,通过设置Java本地接口,可以兼容不同语言编写的业务子单元程序和算法处理子单元程序,以解决不同语言之间的适配问题。因此,通过Java本地接口,可以对算法处理子单元进行实现灵活的调用,并使算法处理子单元生成的预览图像都能够被顺利存储至第一缓存队列。
在其中一个实施例中,能够生成预览请求的应用程序还包括系统应用程序。图3为一实施例的系统应用程序的图像预览方法的流程图,参考图3,在本实施例中,图像预览方法还包括步骤302至步骤306。
步骤302,接收系统应用程序生成的第三预览请求。
具体地,系统应用程序具有较高的数据读取权限,系统应用程序对应的系统回调接口可以是电子设备在出厂时已经被预先配置好的。因此,系统应用程序进行预览时,无需生成并传输第一缓存队列,也可以通过预设的系统回调接口直接获取到预览图像。
步骤304,响应于所述第三预览请求,从所述第二缓存队列获取元数据。可以理解的是,本步骤与步骤104的区别仅在于相应的预览请求不同,因此,本步骤获取元数据的方式可参考步骤104的限定,此处不再进行赘述。
步骤306,对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第二缓存队列,以指示所述系统应用程序通过预设的系统回调接口从所述第二缓存队列获取所述预览图像。示例性地,可以通过GLSurfaceView控件生成预览图像。
可选地,指示系统应用程序获取预览图像的方式可以是将预览图像存储至所述第一缓存队列后,相机能力开放单元发送图像更新消息给系统应用程序,以告知系统应用程序生成了新的预览图像。指示系统应用程序获取预览图像的方式也可以是系统应用程序预先在第一缓存队列处设置监听器,当监听器监听到输入了新的预览图像时,回调系统应用程序进行预览图像读取的操作。
在本实施例中,针对于具有更高数据读取权限的系统应用程序,设置了更加简单的图像预览方法。通过对第三方应用程序和系统应用程序的预览方法进行差异化设置,既可以在保证第三方应用程序能够安全使用相机能力开放单元中的多种图像处理算法,还可以提高系统应用程序的图像预览速度,从而提供了一种更优的图像预览方法。
进一步地,相机能力开放单元返回给系统应用程序的图像格式可以为YUV格式。系统应用程序接收到YUV数据后,可以将YUV数据转换成纹理数据,以使GPU能够直接对纹理数据进行渲染处理,从而改善图像预览的功耗和性能。
在其中一个实施例中,图像预览方法还包括对所述预览图像的处理信息进行封装,并将所述封装结果CameraPreviewResult返回对应的所述第三方应用程序或所述系统应用程序,并采用获取元数据相同的方式获取数据键值对。其中,所述处理信息包括当次生成所述预览图像时的图像处理信息和下一次生成所述预览图像时的决策信息中的至少一种。此外,还可以分别通过CameraPictureResult和CameraRecordingResult回调拍摄和录像过程中的上述处理信息。
其中,当次生成所述预览图像时的图像处理信息可以包括算法处理子单元进行处理时所采用的图像处理算法,例如美颜处理算法、滤镜处理算法、旋转处理算法、水印处理算法、虚化处理算法、HDR处理算法、及多帧处理算法中的至少一种。当次生成所述预览图像时的图像处理信息还可以包括输出的预览图像的格式,例如RAW图像、heif图像或YUV图像。上述预览图像的格式可以封装为CameraPictureImage中的一个byte数组,并通过一个ImageFormat标识。通过返回上述图像处理信息,可以便于第三方应用程序或系统应用程序进行后续的其他图像处理。
下一次生成所述预览图像时的决策信息可以包括下一次需要采用的图像处理算法建议。例如,若当次生成预览图像的过程中,检测陀螺仪的抖动较大,则算法建议可以是多帧处理,以根据多帧处理消除抖动。若AR场景检测结果检测的场景类型为人物,则算法建议可以是美颜处理,以对人物进行美颜。若AR场景检测结果检测的场景类型为风景,则算法建议可以是HDR处理,以形成高动态范围的风景图像。下一次生成所述预览图像时的决策信息还可以包括取帧张数。例如,若当次生成预览图像的过程中,检测陀螺仪的抖动较大,则取帧张数可以是较多帧,以更好地实现拍照后处理。若检测到陀螺仪的抖动较小,则取帧张数可以是较少帧,以减少数据传输量。若当次生成预览图像的过程中,环境亮度较大,则取帧张数可以是较多帧,以对亮度不一的多帧图片进行HDR合成。
在本实施例中,通过返回预览图像的处理信息,可以有效提高图像的处理效率和准确性。而且,通过对预览图像的处理信息进行封装,可以提高处理信息传输的效率,并且能够提高数据传输的安全性。
图4为另一实施例的图像预览方法的流程图,本实施例的图像预览方法以运行于电子设备中的第三方应用程序为例进行描述。参考图4,本实施例的图像预览方法包括步骤402至步骤406。
步骤402,响应于预览触发操作,创建第一缓存队列并生成第一预览请求。
示例性地,该预览触发操作可以是用户双击电子设备的音量键的操作,也可以是用户单击交互界面上的预览图标的操作,本实施例不做限定。以第三方应用程序为“微信”为例,则“微信”触发预览功能的预览触发操作可以是在聊天对话框点击拍摄控件后,调用电子设备的相机接口。可选地,响应于上述预览触发操作,可以是第三方应用程序创建第一缓存队列(Buffer Queue),也可以是第三方应用程序调用其他控件创建第一缓存队列,其他控件再将创建的第一缓存队列回传至第三方应用程序。因此,本实施例不对创建第一缓存队列的创建方式进行限定,只需第三方应用程序具有上述第一缓存队列的读取权限即可。
步骤404,发送携带所述第一缓存队列的第一预览请求,以指示相机能力开放单元生成预览图像。需要说明的是,本实施例中不对相机能力开放单元生成预览图像的方式进行限定,任何能够生成预览图像的实施方式都属于本实施例的保护范围。
步骤406,从所述第一缓存队列获取所述预览图像。
具体地,第三方应用程序可以响应于相机能力开放单元发送图像更新消息,从第一缓存队列读取新的预览图像。第三方应用程序也可以是通过预先在第一缓存队列处的监听器,监听第一缓存队列中的数据变化情况,从而通过回调的方式获取预览图像。
在本实施例中,第三方应用程序通过传输第一缓存队列至相机能力开放模块,可以直接从第一缓存队列中获取预览图像,从而克服了相机能力开放单元内部的第二缓存队列未对第三方应用程序开放接口,导致第三方应用程序无法直接从第二缓存队列获取数据的问题。即,提供了一种第三方应用程序能够灵活使用相机能力开放单元中的图像处理功能的预览方法。
图5为又一实施例的图像预览方法的流程图,本实施例的图像预览方法应用于前述电子设备为例,以呈现相机能力开发单元、第三方应用程序和硬件抽象层之间的信号交互过程。参考图5,本实施例的相机能力开发单元包括算法处理单元和业务子单元,业务子单元具体包括生产者、消费者和业务层,本实施例的图像预览方法包括步骤502至步骤526。其中,各步骤的具体限定可参考前述实施例,此处不再进行赘述。
步骤502,第三方应用程序响应于预览触发操作,创建第一缓存队列并生成第一预览请求。具体地,第三方应用程序通过setReaptingRequest和setReaptingRequest(callback)指令生成第一预览请求。
步骤504,第三方应用程序发送携带第一缓存队列的第一预览请求。具体地,第三方应用程序通过startPreview指令发送第一预览请求,并在调用CameraDevice#startPreview指令的时候将第一缓存队列作为方法的参数传递至相机能力开发单元。
步骤506,生产者构建参数。具体地,生产者通过createRequestTag指令构建参数,并通过createRequestTag、buildStageParameter和startPreview(tag,parameter)指令将来自第三方应用程序的第一预览请求发送至业务层。
步骤508,业务层接收第三方应用程序所生成的携带第一缓存队列的第一预览请求。其中,业务层包括Basemode、camera2StateMachineImpl和Camera2Impl三个部分。Basemode用于接收来自生产者的createRequestTag和buildStageParameter指令,camera2StateMachineImpl用于接收来自生产者的startPreview(tag,parameter)指令。
步骤510,消费者注册与第一缓存队列对应的第三方回调接口。具体地,消费者响应于linkToObserver指令调用reader.setOnImageAvailableListener指令设置监听器,以监听第一缓存队列的数据变化情况,从而使第三方应用程序能够及时从第三方回调接口获取第一缓存队列中新增的数据。此外,消费者还通知算法处理子单元设置预览Surface。
步骤512,业务层响应于第一预览请求,创建第二缓存队列。
步骤514,业务层调用Java本地接口,以通过Java本地接口将第一缓存队列传输至算法处理子单元。
步骤516,业务层发送第二预览请求。具体地,业务层通过setRepeatingBurst指令发送第二预览请求。更进一步地,业务层通过setRepeatingBurst指令将第二预览请求发送至Framework中的CameraServer,并由CameraServer将第二预览请求进一步发送至硬件描述层。
步骤518,硬件描述层响应于第二预览请求,获取元数据并存储至第二缓存队列。具体地,硬件描述层将元数据发送至Framework中的CameraServer,并由CameraServer将由将元数据并存储至第二缓存队列。
步骤520,消费者从第二缓存队列获取元数据。具体地,消费者通过addPreviewimage(Image,meta)指令将元数据发送至算法处理子单元。
步骤522,算法处理子单元对元数据进行处理以生成预览图像,并将预览图像存储至第一缓存队列。具体地,算法处理子单元通过onPreviewReceived(AqsReqult,APsTotalResult)指令将预览图像存储至第一缓存队列。
步骤524,消费者对元进行封装,并将所述封装结果返回对应的所述第三方应用程序。具体地,消费者通过onPreviewFrameReceived将所述封装结果返回对应的所述第三方应用程序。
步骤526,第三方应用程序通过注册的第三方回调接口从第一缓存队列获取预览图像。具体地,第三方应用程序通过onPreviewReceived指令从第一缓存队列回调预览图像。
在本实施例中,通过上述步骤,实现了一种第三方应用程序能够灵活使用相机能力开放单元中的图像处理功能的预览方法。
可以理解的是,系统应用程序的图像预览方法的实施方式与图5提供的实施方式相似,区别在于系统应用程序的图像预览方法不需要生成第一缓存队列,且相应不需要执行步骤510和步骤514,此外,算法处理子单元在步骤522中生成预览图像后,直接将预览图像回传至第二缓存队列,系统应用程序直接从第二缓存队列获取预览图像。因此,系统应用程序的图像预览方法中其他步骤的交互顺序可参考图5实施例,此处不再进行赘述。
应该理解的是,虽然图1至图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1至图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图6为一实施例的图像预览装置的结构框图,参考图6,图像预览装置包括请求接收模块502、元数据获取模块504和预览生成模块506。
其中,请求接收模块502用于接收第三方应用程序所生成的携带第一缓存队列的第一预览请求。元数据获取模块504用于响应于所述第一预览请求,从第二缓存队列获取元数据。预览生成模块506用于对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。
在其中一个实施例中,元数据获取模块504用于响应于所述第一预览请求,创建第二缓存队列;发送第二预览请求至硬件抽象层,以指示所述硬件抽象层响应于所述第二预览请求将元数据存储至所述第二缓存队列;从所述第二缓存队列读取所述元数据。
在其中一个实施例中,图像预览装置还包括接口注册模块。接口注册模块用于注册与所述第一缓存队列对应的第三方回调接口,所述第三方回调接口用于所述第三方应用程序从所述第一缓存队列获取所述预览图像。
在其中一个实施例中,请求接收模块502还用于响应于所述第三预览请求,从所述第二缓存队列获取元数据。元数据获取模块504还用于响应于所述第三预览请求,从所述第二缓存队列获取元数据。预览生成模块506还用于对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第二缓存队列,以指示所述系统应用程序通过预设的系统回调接口从所述第二缓存队列获取所述预览图像。
在其中一个实施例中,图像预览装置还包括信息封装模块。信息封装模块用于对所述预览图像的处理信息进行封装,并将所述封装结果返回对应的所述第三方应用程序或所述系统应用程序,所述处理信息包括当次生成所述预览图像时的图像处理信息和下一次生成所述预览图像时的决策信息中的至少一种。
图7为另一实施例的图像预览装置的结构框图,参考图7,在本实施例中,图像预览装置包括请求生成模块602、请求发送模块604和预览获取模块606。请求生成模块602用于响应于预览触发操作,创建第一缓存队列并生成第一预览请求。请求发送模块604用于发送携带所述第一缓存队列的第一预览请求,以指示相机能力开放单元生成预览图像。预览获取模块606用于从所述第一缓存队列获取相机能力开放单元响应于所述第一预览请求生成的预览图像。
上述图像预览装置中各个模块的划分仅用于举例说明,在其他实施例中,可将图像预览装置按照需要划分为不同的模块,以完成上述图像预览装置的全部或部分功能。关于图像预览装置的具体限定可以参见上文中对于图像预览方法的限定,在此不再赘述。上述图像预览装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例还提供了一种电子设备,图8为一个实施例中电子设备的内部结构示意图。如图8所示,该电子设备包括通过系统总线连接的处理器和存储器。其中,该处理器用于提供计算和控制能力,支撑整个电子设备的运行。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统和计算机程序。该计算机程序可被处理器所执行,以用于实现以下各个实施例所提供的一种图像预览方法。内存储器为非易失性存储介质中的操作系统计算机程序提供高速缓存的运行环境。该电子设备可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑、穿戴式设备等任意终端设备。
本申请实施例中提供的图像预览装置中的各个模块的实现可为计算机程序的形式。该计算机程序可在终端或服务器上运行。该计算机程序构成的程序模块可存储在电子设备的存储器上。该计算机程序被处理器执行时,实现本申请实施例中所描述方法的步骤。
本申请实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当所述计算机可执行指令被一个或多个处理器执行时,使得所述处理器执行图像预览方法的步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行图像预览方法。
本申请所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种图像预览方法,应用于相机能力开放单元,所述相机能力开放单元包括业务子单元和算法处理子单元;所述方法包括:
所述业务子单元接收第三方应用程序所生成的携带第一缓存队列的第一预览请求;
所述业务子单元响应于所述第一预览请求,从第二缓存队列获取元数据,调用Java本地接口,以通过所述Java本地接口将所述第一缓存队列传输至所述算法处理子单元;
所述算法处理子单元对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第一缓存队列,以指示所述第三方应用程序从所述第一缓存队列获取所述预览图像。
2.根据权利要求1所述的图像预览方法,其特征在于,所述业务子单元响应于所述第一预览请求,从第二缓存队列获取元数据,包括:
所述业务子单元响应于所述第一预览请求,创建第二缓存队列;
所述业务子单元发送第二预览请求至硬件抽象层,以指示所述硬件抽象层响应于所述第二预览请求将元数据存储至所述第二缓存队列;
所述业务子单元从所述第二缓存队列读取所述元数据。
3.根据权利要求2所述的图像预览方法,其特征在于,在所述发送第二预览请求至硬件抽象层之前,还包括:
注册与所述第一缓存队列对应的第三方回调接口,所述第三方回调接口用于所述第三方应用程序从所述第一缓存队列获取所述预览图像。
4.根据权利要求1至3任一项所述的图像预览方法,其特征在于,还包括:
接收系统应用程序生成的第三预览请求;
响应于所述第三预览请求,从所述第二缓存队列获取元数据;
对所述元数据进行处理以生成预览图像,并将所述预览图像存储至所述第二缓存队列,以指示所述系统应用程序通过预设的系统回调接口从所述第二缓存队列获取所述预览图像。
5.根据权利要求4所述的图像预览方法,其特征在于,所述相机能力开放单元返回给所述系统应用程序的预览图像的图像格式为YUV格式。
6.根据权利要求4所述的图像预览方法,其特征在于,还包括:
对所述预览图像的处理信息进行封装,并将封装结果返回对应的所述第三方应用程序或所述系统应用程序,所述处理信息包括当次生成所述预览图像时的图像处理信息和下一次生成所述预览图像时的决策信息中的至少一种。
7.根据权利要求6所述的图像预览方法,其特征在于,所述当次生成所述预览图像时的图像处理信息包括所述算法处理子单元进行处理时所采用的图像处理算法和输出的预览图像的格式中的至少一种。
8.一种图像预览方法,其特征在于,应用于第三方应用程序,所述方法包括:
响应于预览触发操作,创建第一缓存队列并生成第一预览请求;
发送携带所述第一缓存队列的第一预览请求,以指示相机能力开放单元生成预览图像;所述相机能力开放单元的业务子单元响应于所述第一预览请求,从第二缓存队列获取元数据,调用Java本地接口,以通过所述Java本地接口将所述第一缓存队列传输至所述相机能力开放单元的算法处理子单元;所述算法处理子单元对所述元数据进行处理以生成预览图像,并将预览图像存储至第一缓存队列;
从所述第一缓存队列获取所述预览图像。
9.根据权利要求8所述的图像预览方法,其特征在于,所述创建第一缓存队列,包括:
第三方应用程序创建第一缓存队列;或
第三方应用程序调用其他控件创建第一缓存队列,其他控件再将创建的第一缓存队列回传至第三方应用程序。
10.一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述的图像预览方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的图像预览方法的步骤。
12.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行实现权利要求1至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111274940.6A CN113992854B (zh) | 2021-10-29 | 2021-10-29 | 图像预览方法、装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111274940.6A CN113992854B (zh) | 2021-10-29 | 2021-10-29 | 图像预览方法、装置、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113992854A CN113992854A (zh) | 2022-01-28 |
CN113992854B true CN113992854B (zh) | 2024-09-06 |
Family
ID=79744641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111274940.6A Active CN113992854B (zh) | 2021-10-29 | 2021-10-29 | 图像预览方法、装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113992854B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115484403B (zh) * | 2022-08-08 | 2023-10-24 | 荣耀终端有限公司 | 录像方法和相关装置 |
TWI828298B (zh) * | 2022-09-01 | 2024-01-01 | 英屬維爾京群島商威爾德嘉德有限公司 | 拍攝方法、拍攝裝置、電子設備和可讀存儲介質 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804459A (zh) * | 2021-01-12 | 2021-05-14 | 杭州星犀科技有限公司 | 基于虚拟摄像头的图像展示方法、装置、存储介质及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107483812B (zh) * | 2017-08-02 | 2020-08-04 | 深圳依偎控股有限公司 | 一种多平台并行直播的方法及装置 |
CN110881104A (zh) * | 2019-10-17 | 2020-03-13 | 宇龙计算机通信科技(深圳)有限公司 | 拍照方法、装置、存储介质及终端 |
CN112422832B (zh) * | 2020-11-20 | 2022-07-15 | 展讯通信(天津)有限公司 | 图像数据的传输方法、移动终端及存储介质 |
CN112399087B (zh) * | 2020-12-07 | 2022-05-20 | Oppo(重庆)智能科技有限公司 | 图像处理方法、装置、拍摄装置、电子设备和存储介质 |
CN113038004B (zh) * | 2021-02-26 | 2022-09-23 | 展讯通信(天津)有限公司 | 一种多窗口预览图像方法、装置、计算机设备和存储介质 |
-
2021
- 2021-10-29 CN CN202111274940.6A patent/CN113992854B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804459A (zh) * | 2021-01-12 | 2021-05-14 | 杭州星犀科技有限公司 | 基于虚拟摄像头的图像展示方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113992854A (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110086967B (zh) | 图像处理方法、图像处理器、拍摄装置和电子设备 | |
CN113992854B (zh) | 图像预览方法、装置、电子设备和计算机可读存储介质 | |
US20220417416A1 (en) | Photographing method in telephoto scenario and mobile terminal | |
CN113727035B (zh) | 图像处理方法、系统、电子设备及存储介质 | |
WO2020259250A1 (zh) | 图像处理方法、图像处理器、拍摄装置和电子设备 | |
CN109068059B (zh) | 一种调用相机的方法、移动终端及存储介质 | |
CN113890998B (zh) | 图像数据的处理方法、装置、电子设备和存储介质 | |
TW201923703A (zh) | 圖像硬體編碼處理方法和裝置 | |
CN111314606B (zh) | 拍照方法、装置、电子设备及存储介质 | |
CN111259441B (zh) | 设备控制方法、装置、存储介质及电子设备 | |
CN112672046B (zh) | 连拍图像的存储方法、装置、电子设备和存储介质 | |
US20240114233A1 (en) | Processing method and electronic device | |
WO2024109203A1 (zh) | 拍照处理方法和电子设备 | |
WO2023160230A1 (zh) | 一种拍摄方法及相关设备 | |
CN116052236B (zh) | 人脸检测处理引擎、涉及人脸检测的拍摄方法及设备 | |
CN113900839B (zh) | 数据库调用方法、装置、电子设备和存储介质 | |
US20180041711A1 (en) | Selective Partial View Enlargement for Image and Preview | |
CN118076975A (zh) | 数据处理方法、数据处理系统、电子设备及存储介质 | |
CN114630152A (zh) | 用于图像处理器的参数传输方法、装置及存储介质 | |
CN113840091B (zh) | 图像处理方法、装置、电子设备和计算机可读存储介质 | |
CN117692790B (zh) | 图像数据处理方法及相关装置 | |
CN113259582B (zh) | 图片生成方法及终端 | |
WO2024093518A1 (zh) | 一种出图模式切换方法及相关设备 | |
CN115776532B (zh) | 一种录像中抓拍图像的方法及电子设备 | |
WO2023035868A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |