一種相機應用的圖像預覽方法、裝置及相機應用系統與流程
2023-05-26 19:12:21 1

本申請涉及計算機技術,具體涉及一種相機應用的圖像預覽方法、裝置及相機應用系統。
背景技術:
目前已有多種應用能夠調用行動裝置相機以進行不同模式的拍攝,該應用可以是如QQ、全能相機、超級相機等應用,該行動裝置可以是如手機、平板電腦等的設備,該模式可以是如拍照、攝像、全景等模式;本申請中將這些能夠調用行動裝置的相機進行不同模式的拍攝的應用統稱為相機應用。
為了使用戶拍攝的圖像能夠更好看,很多相機應用提供了圖像處理功能,例如美顏處理。同時,為了使用戶能夠在拍攝之前了解經圖像處理之後的效果,很多相機應用都提供了實時預覽功能,例如,美顏預覽;即,當攝像頭對著用戶臉部時,屏幕上顯示的用戶的臉是已經美顏處理的預覽圖像。
在現有技術中,相機應用的圖像預覽功能的實現方法流程如圖1所示:S101,在相機的HAL(Hardware Adapter Layer硬體適配層)增加圖像處理功能;S102,HAL採集預覽圖像,然後進行圖像處理;S103,將處理後的圖像輸出至HAL的顯示模塊進行顯示。由於HAL依賴於如MTK、高通、展訊等的各個平臺,所以現有技術中的不同平臺的相機應用的圖像預覽功能的實現方法差異較大。
現有技術相機應用的圖像預覽方案依賴於各平臺的HAL,代碼的實現差異性大,兼容性較差。
技術實現要素:
本申請實施例中提供了一種相機應用的圖像預覽方法、裝置及相機應用系統,用於解決現有技術中的相機應用的圖像預覽方案兼容性較差的問題。
根據本申請實施例的一個方面,提供了一種相機應用的圖像預覽方法,包括:觸發框架Framework接收硬體適配層HAL採集的圖像;對圖像進行處理,得到處理後的圖像;將處理後的圖像輸出至Framework層對應的顯示模塊以進行顯示。
根據本申請實施例的另一個方面,提供了一種相機應用的圖像預覽裝置,包括:觸發模塊,用於觸發框架Framework接收HAL採集的圖像;圖像處理模塊,用於對圖像進行處理,得到處理後的圖像;第一輸出模塊,用於將處理後的圖像輸出至Framework層對應的顯示模塊以進行顯示。
根據本申請實施例的再一個方面,提供了一種相機應用系統,包括:上述的相機應用的圖像預覽裝置。
採用本申請實施例中的相機應用的圖像預覽方法,能夠結合Framework層實現圖像預覽,由於Framework是系統自帶框架,不依賴於平臺,因此能夠跨平臺、跨手機使用,提升了兼容性。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。在附圖中:
圖1為現有技術中的相機應用的圖像預覽功能的實現方法流程圖;
圖2為本申請實施例一所示的相機應用的圖像預覽方法的流程圖;
圖3為本申請實施例二所示的相機應用的圖像預覽方法的流程圖;
圖4為本申請實施例三所示的相機應用的圖像預覽方法的流程圖;
圖5為本申請實施例四所示相機應用的圖像預覽裝置的結構示意圖;
圖6為本申請實施例五所示相機應用系統的結構示意圖。
具體實施方式
為了使本申請實施例中的技術方案及優點更加清楚明白,以下結合附圖對本申請的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本申請的一部分實施例,而不是所有實施例的窮舉。需要說明的是,在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互組合。
在實現本申請的過程中,申請人發現,在現有技術中,相機應用的圖像預覽功能的實現方法如圖1所示:在相機的HAL增加圖像處理功能;HAL採集預覽圖像,然後進行圖像處理,將處理後的圖像輸出至HAL的顯示模塊進行顯示。由於HAL依賴於如MTK、高通、展訊等的各個平臺,所以現有技術中的不同平臺的相機應用的圖像預覽功能的實現方法差異較大。現有技術中的方案依賴於各平臺的HAL,代碼的實現差異性大,兼容性較差。另外,對於不開放原始碼的三方手機,由於無法獲得HAL原始碼,所以現有技術中的方案無法實施。
針對上述問題,本申請實施例中提供了一種相機應用的圖像預覽方法,通過在Framework層增加圖像處理功能和顯示模塊來對HAL採集的圖像進行相應處理,並進行顯示,從而能夠結合Framework層實現圖像預覽,由於Framework是系統自帶框架,不依賴於平臺,因此能夠跨平臺、跨手機使用,提升了兼容性。
本申請實施例中的方案可以在相機應用的硬體底層如Framework層實現,也可以在作業系統層實現。
本申請實施例中的方案可以應用於相機應用中,該相機應用可以是如Camera360、全能相機、超級相機等的第三方相機應用,也可以是如小米、三星、聯想、酷派、華為等硬體廠商的內置相機應用,還可以是如雲OS(Operating System,作業系統)等作業系統、小米ROM(Android第三方作業系統)、百 度ROM等第三方作業系統自帶的相機應用。
實施例一
圖2為本申請實施例一所示的相機應用的圖像預覽方法的流程圖。
如圖2所示,根據本申請實施例一所示的相機應用的圖像預覽方法包括以下步驟:
S201,觸發框架Framework接收硬體適配層HAL採集的圖像;
S202,對圖像進行處理,得到處理後的圖像;
S203,將處理後的圖像輸出至Framework層對應的顯示模塊SurfaceTexture以進行顯示。
在S201的一種具體實施方式中,可以通過HAL的圖像回傳組件(該功能是標準功能,所有平臺都支持)來觸發Framework接收HAL採集的圖像。
在S202的一種具體實施方式中,可以採用本領域技術人員常用的多種圖像處理方式以對圖像進行多種模式的處理,如美顏、懷舊、衝洗、黑白、燭光等,本申請對此不作限制。
在具體實施時,Framework可以是如安卓Android系統的作業系統自帶框架,該框架可以用於向相機應用APK控制相機硬體的接口。
在具體實施時,本申請實施例中的相機應用的圖像預覽方法與Framework之間的接口可以採用多種邏輯和名稱,本領域技術人員應當理解,只要能夠將圖像顯示到顯示模塊即可。
在具體實施時,本申請實施例中的相機應用的圖像預覽方法可以以原始碼的形式實現,也可以以靜態庫、動態庫的形式被Framework調用。
在具體實施時,顯示模塊可以是用於顯示的軟體功能模塊,由相機應用創建。
在本申請實施例中,在步驟203之前,還可以預先為Framework設置顯示模塊,該顯示模塊可以是安卓系統中的SurfaceTexture。
在具體實施時,可以採用將HAL的顯示模塊設置為Framework的顯示模 塊的方式為Framework層設置顯示模塊;更具體地,可以將HAL的顯示模塊的句柄使用者修改為Framework;例如,在安卓系統中,將SurfaceTexture的句柄使用者由原來的HAL改為Framework。這種單顯示模塊方式在某些平臺上也能達到該方案的效果,即,雖然修改了HAL的顯示邏輯(即HAL不再進行顯示),但是在例如MTK、高通、三星Exynos的平臺上也是可以運行的。
在具體實施時,還可以採用創建新的顯示模塊,並將創建的顯示模塊設置為Framework的顯示模塊的方式為Framework層設置顯示模塊。在具體實施時,可以通過在安卓系統的應用層調用UI(User Interface,用戶界面)接口創建新的SurfaceTexture。採用在Framework新增顯示模塊的雙顯示模塊方式,能夠避免對HAL的顯示邏輯進行修改,能夠更好的跨平臺。
在本申請實施例的另一具體實施方式中,在觸發框架Framework接收硬體適配層HAL採集的圖像之前,還可以包括:獲取相機應用的圖像預覽模式,該圖像預覽模式包括處理模式和非處理模式。
在具體實施時,相機應用的圖像預覽模式可以是由用戶設置的,也可以是由相機應用默認設置的,本申請對此不作限制。在具體實施時,處理模式可以是要求相機提供處理後的圖像供用戶預覽,非處理模式可以是要求相機提供原始的HAL層採集的圖像供用戶預覽。通過圖像預覽模式的設置可以向用戶提供更多種的預覽模式,提升用戶體驗。
在本申請實施例的另一具體實施方式中,在採用在Framework新增顯示模塊的雙顯示模塊方式時,為了避免HAL的顯示模塊與Framework顯示模塊之間的影響,可以在圖像預覽模式為處理模式時,隱藏HAL的顯示模塊;同時,將處理後的圖像輸出至Framework的顯示模塊進行顯示。
在具體實施時,可以通過設置HAL的顯示模塊的參數來實現隱藏HAL的顯示模塊,例如,將HAL的顯示模塊的透明度設置為100%,或者,還可以採用將HAL的顯示模塊的尺寸設置為非常小的方式,例如1x1像素;還可以採用將HAL的顯示模塊放置到顯示屏幕中的用戶可視區域之外的方式,例如, 將HAL的顯示模塊設置在可視區域之外的某一個固定位置上,例如,在可視區域右上角離頁面頂端(0,-9999)。
在具體實施時,還可以通過對Framework的顯示模塊的參數進行設置來隱藏HAL的顯示模塊,例如,將Framework的顯示模塊的位置設置於HAL的顯示模塊之上,同時將Framework的顯示模塊的透明度設置為0%。由於未對HAL的顯示模塊的代碼進行修改,並且未修改HAL的運行邏輯,即沒有通過設置某些參數來影響HAL的運行邏輯;因此不依賴於HAL,所以跨平臺能力大大增強。
在本申請實施例的另一具體實施方式中,在採用在Framework新增顯示模塊的雙顯示模塊方式時,為了避免HAL的顯示模塊與Framework顯示模塊之間的影響,可以在圖像預覽模式為非處理模式時,隱藏Framework的顯示模塊;並將HAL採集的圖像輸出至HAL的顯示模塊進行顯示。
在具體實施時,可以採用多種方式來隱藏Framework的顯示模塊,例如,將Framework的顯示模塊的透明度設置為100%,或者,將HAL的顯示模塊的位置設置於Framework的顯示模塊之上,且HAL的顯示模塊的透明度設置為0%;還可以採用將Framework的顯示模塊的尺寸設置為非常小的方式,例如1x1像素;還可以採用將Framework的顯示模塊放置到顯示屏幕中的用戶可視區域之外的方式,例如,將Framework的顯示模塊的設置在可視區域之外的某一個固定位置上,例如,在可視區域右上角離頁面頂端(0,-9999)。
在本申請實施例的一種具體實施方式中,在HAL採集的圖像中包括人臉時;處理後的圖像可以為美顏後的圖像;對圖像進行處理可以具體包括:識別HAL採集的圖像中的人臉;對人臉進行美顏處理。
採用本申請實施例中的相機應用的圖像預覽方法,能夠結合Framework層實現圖像預覽,由於Framework是系統自帶框架,不依賴於平臺,因此能夠跨平臺、跨手機使用,提升了兼容性。
另外,與相關技術中在相機應用APK層實現圖像預覽相比,將預覽圖像 傳輸到APK需要進行一次跨進程傳輸和至少一次JNI(JavaNativeInterface,JAVA本地調用)拷貝,耗時較長,影響用戶體驗。
而採用本申請實施例中的相機應用的圖像預覽方法,結合Framework層不需要待預覽圖像的跨進程傳輸和JNI拷貝,比在APK實現的流暢性要好,用時也較短,提升了用戶體驗。
下面將以具體的應用實例為例,對本申請實施例中的圖像預覽方法的流程進行說明。
實施例二
圖3為本申請實施例二所示的相機應用的圖像預覽方法的流程圖。
在本申請實施例二中,採用將HAL的顯示模塊設置為Framework的顯示模塊的單顯示模塊的方式。
如圖3所示,根據本申請實施例二所示的相機應用的圖像預覽方法包括以下步驟:
S301,接收用戶選擇的圖像預覽模式;
S302,HAL採集圖像後,將圖像輸出至Framework層;
S303,如果用戶選擇的圖像預覽模式為非處理模式,則執行步驟S304-S305;如果為「美顏」處理模式,則執行步驟S306-S307;
S304,在Framework層對圖像做透傳處理,即,不對圖像進行處理,直接輸出輸入的圖像;
S305,將透傳處理的圖像輸出至Framework層的顯示模塊進行顯示。至此,非處理模式的圖像預覽結束。
在執行步驟S305之後,用戶看到的是Framework層的顯示模塊顯示的未處理圖像。
S306,結合Framework層對圖像做美顏處理;
S307,將美顏處理後的圖像輸出至Framework層的顯示模塊進行顯示。至 此,處理模式的圖像預覽結束。在執行步驟S307之後,用戶看到的是Framework層的顯示模塊中顯示的經美顏處理後的圖像。
實施例三
圖4為本申請實施例三所示的相機應用的圖像預覽方法的流程圖。
在本申請實施例三中,採用為Framework創建新的顯示模塊的雙顯示模塊的方式。
如圖4所示,根據本申請實施例三所示的相機應用的圖像預覽方法包括以下步驟:
S401,接收用戶選擇的圖像預覽模式;
S402,HAL採集圖像後,將圖像輸出至HAL的顯示模塊和Framework層;
S403,如果用戶選擇的圖像預覽模式為非處理模式,則執行步驟S404和S405;如果為「美顏」處理模式,則執行步驟S406和S407;
S404,在Framework層對圖像進行透傳處理,即,不對圖像進行處理,直接輸出輸入的圖像,並將透傳後的圖像輸出至Framework層的顯示模塊;
S405,觸發隱藏Framework的顯示模塊。至此,非處理模式的圖像預覽結束。
在執行步驟S405之後,用戶看到的是HAL的顯示模塊中顯示的未處理圖像。
在具體實施時,步驟S404和S405之間並沒有嚴格的時間順序,可以先執行S404,再執行S405;也可以先執行S405,再執行S404。
S406,結合Framework層對圖像進行美顏處理,並將美顏後的圖像輸出至Framework層的顯示模塊;
S407,觸發隱藏HAL的顯示模塊。至此,處理模式的圖像預覽結束。
在執行步驟S407之後,用戶看到的是Framework層的顯示模塊中顯示的經美顏處理後的圖像。
在具體實施時,步驟S406和S407之間並沒有嚴格的時間順序,可以先執行S406,再執行S407;也可以先執行S406,再執行S407。
由於顯示模塊,如安卓系統中的SurfaceTextue,是作業系統提供的標準組件,所以對顯示模塊的創建、隱藏、顯示等均不依賴於平臺,因此提高了本申請實施例的跨平臺能力。
採用本申請實施例中的相機應用的圖像預覽方法,能夠結合Framework層實現圖像預覽,由於Framework是系統自帶框架,不依賴於平臺,因此能夠跨平臺、跨手機使用,提升了兼容性。
基於同一發明構思,本申請實施例中還提供了一種相機應用的圖像預覽裝置,由於該裝置解決問題的原理與本申請實施例所提供的方法相似,因此該裝置的實施可以參見方法的實施,重複之處不再贅述。
實施例四
圖5為本申請實施例四所示相機應用的圖像預覽裝置的結構示意圖。
如圖5所示,根據本申請實施例四所示的相機應用的圖像預覽裝置500,包括:觸發模塊501,用於觸發框架Framework接收硬體適配層HAL採集的圖像;圖像處理模塊502,用於對圖像進行處理,得到處理後的圖像;第一輸出模塊503,用於將處理後的圖像輸出至Framework層對應的顯示模塊以進行顯示。
優選地,根據本申請實施例二所示的相機應用的圖像預覽裝置還包括:設置模塊,用於為Framework設置顯示模塊。
可選地,創建模塊具體用於將HAL的SurfaceTexture設置為Framework的SurfaceTexture。
優選地,創建模塊具體用於將HAL的顯示模塊設置為Framework的顯示模塊。
優選地,設置模塊具體用於將HAL的顯示模塊的句柄使用者修改為Framework。
優選地,設置模塊具體包括:創建子模塊,用於創建顯示模塊;設置子模塊,用於將創建的顯示模塊設置為Framework的顯示模塊。
優選地,根據本申請實施例二所示的相機應用的圖像預覽裝置還包括:模式獲取模塊,用於獲取相機應用的圖像預覽模式,圖像預覽模式包括處理模式和非處理模式。
優選地,圖像預覽模式為處理模式時,根據本申請實施例二所示的相機應用的圖像預覽裝置還包括:第一隱藏模塊,用於隱藏HAL的顯示模塊。
優選地,圖像預覽模式為非處理模式時,根據本申請實施例二所示的相機應用的圖像預覽裝置還包括:第二隱藏模塊,用於隱藏Framework的顯示模塊。
優選地,所述裝置還包括:第二輸出模塊,用於將HAL採集的圖像輸出至HAL對應的顯示模塊以進行顯示。
優選地,HAL採集的圖像中包括人臉;處理後的圖像為美顏後的圖像;圖像處理模塊具體包括:識別子模塊,用於識別HAL採集的圖像中的人臉;美顏子模塊,用於對人臉進行美顏處理。
採用本申請實施例中的相機應用的圖像預覽裝置,能夠結合Framework層實現人臉的美顏預覽,由於Framework是系統自帶框架,不依賴於平臺,因此能夠跨平臺、跨手機使用,提升了兼容性。
基於同一發明構思,本申請實施例中還提供了一種相機應用系統,由於該系統解決問題的原理與本申請實施例所提供的方法相似,因此該系統的實施可以參見方法的實施,重複之處不再贅述。
實施例五
圖6為本申請實施例五所示相機應用系統的結構示意圖。
如圖6所示,根據本申請實施例五所示的相機應用系統600,包括:相機應用的圖像預覽裝置500。
採用本申請實施例中的相機應用系統,能夠在Framework實現人臉的美顏 預覽,由於Framework是系統自帶框架,不依賴於平臺,因此能夠跨平臺、跨手機使用,提升了兼容性。
本領域內的技術人員應明白,本申請的實施例可提供為方法、系統、或電腦程式產品。因此,本申請可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。
本申請是參照根據本申請實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
儘管已描述了本申請的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本申請範圍的所有變更和修改。
顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和範圍。這樣,倘若本申請的這些修改和變型屬於本申請權利要求及其等同技術的範圍之內,則本申請也意圖包含這些改動和變型在內。