本發明涉及圖像處理領域,具體涉及一種Windows系統上攝像頭畫面處理的方法和一種Windows系統上攝像頭畫面處理的系統。
背景技術:
當用手機進行拍照時,可以使用手機相機帶有的美顏設置,對拍攝照片的大小、聚焦度、曝光度、亮度、飽和度、對比度等進行調節,從而達到優化照片的目的。
隨著直播行業的興起,當主播進行直播時,電腦前的主播通常會開著攝像頭與觀眾進行互動,但目前Windows系統由于缺乏對攝像頭輸出畫面的調節功能,故運行于Windows系統上的直播軟件往往無法通過對攝像頭輸出畫面調節,達到達到優化直播畫面的目的。
技術實現要素:
針對現有技術中存在的缺陷,本發明的目的在于提供一種Windows系統上攝像頭畫面處理的方法和一種Windows系統上攝像頭畫面處理的系統,能夠對攝像頭輸出畫面進行優化調節。
為達到以上目的,本發明采取的技術方案是:包括:
步驟S1:枚舉Windows系統的設備列表中所有攝像頭名稱,在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭設備;
步驟S2:使用第一種調節方法、第二種調節方法和第三種調節方法中的一種或幾種對當前攝像頭畫面進行處理;其中,
第一種調節方法為調用Windows系統中IAMVideoProcAmp接口調節當前攝像頭輸出畫面的亮度;
第二種調節方法為調用Windows系統中IAMCameraControl接口調節當前攝像頭輸出畫面的曝光度;
第三種調節方法為根據畫面每個像素的像素均值,將像素分為白色類和黑色類,通過增加白色類像素的像素值或降低黑色類像素的像素值增減畫面的對比度。
在上述技術方案的基礎上,步驟S1具體為:
S1.1:創建用于枚舉需要進行畫面處理的當前攝像頭設備的ICreateDevEnum接口;
S1.2:根據ICreateDevEnum接口,獲取用于枚舉Windows系統的設備列表中攝像頭名稱的IEnumMoniker接口;
S1.3:在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭;
S1.4:獲取當前攝像頭的IMoniker接口,所述IMoniker接口為DirectShow開發包中的初始節點。
在上述技術方案的基礎上,當前攝像頭輸出畫面的亮度調節步驟為:
S2.1.1:根據IMoniker接口,獲取用于調節攝像頭輸出畫面亮度的IAmVideoProcAmp接口;
S2.1.2:調用IAmVideoProcAmp接口中的Set方法,將攝像頭亮度的枚舉值作為參數傳入Set方法中,完成對當前攝像頭輸出畫面亮度的調節。
在上述技術方案的基礎上,當前攝像頭輸出畫面的曝光度調節步驟為:
S2.2.1:根據IMoniker接口,獲取用于調節攝像頭輸出畫面曝光度的IAmCameraControl接口;
S2.2.2:調用IAmCameraControl接口中的Set方法,將攝像頭曝光度的枚舉值作為參數傳入Set方法中,完成對當前攝像頭輸出畫面曝光度的調節。
在上述技術方案的基礎上,每個像素的像素均值計算公式為:
avreage(rgb)=(r+g+b)/3
其中,avreage(rgb)表示像素均值,r為像素的紅色部分,g為像素的綠色部分,b為像素的藍色部分。
在上述技術方案的基礎上,像素的分類方法為:
設定分類閥值為128,當avreage(rgb)≥128時,像素為白色類,當avreage(rgb)<128時,像素為黑色類。
本發明還提供一種Windows系統上攝像頭畫面處理的系統,包括:
獲取模塊,其用于枚舉Windows系統的設備列表中所有攝像頭的攝像頭名稱,并在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭;
調節模塊,其用于對當前攝像頭輸出畫面屬性的亮度、曝光度和對比度中的一個或多個進行調節;
輸出模塊,其用于輸出調節后的攝像頭畫面。
在上述技術方案的基礎上,調用Windows系統中IAMVideoProcAmp接口和IAMCameraControl接口分別調節當前攝像頭輸出畫面的亮度屬性和曝光度屬性。
在上述技術方案的基礎上,當前攝像頭輸出畫面的對比度屬性的調節方法為:
根據畫面每個像素的像素均值,將像素分為白色類和黑色類,通過增加白色類像素的像素值或降低黑色類像素的像素值增減畫面的對比度。
在上述技術方案的基礎上,所述輸出模塊用于將調節后的攝像頭畫面輸出給直播軟件。
與現有技術相比,本發明一種Windows系統上攝像頭畫面處理的方法的優點在于:通過調用Windows系統上連接的攝像頭,在Windows系統上直接對攝像頭輸出的畫面進行優化調節,高效且方便。
本發明一種Windows系統上攝像頭畫面處理的系統的優點在于:當主播在電腦前開啟攝像頭和觀眾進行直播互動時,在Windows系統上直接對攝像頭輸出的畫面進行優化調節。
附圖說明
圖1為本發明一種Windows系統上攝像頭畫面處理的方法的流程圖。
具體實施方式
以下結合附圖對本發明作進一步詳細說明。
參見圖1所示,本發明提供一種Windows系統上攝像頭畫面處理的方法,通過該方法,能夠對Windows系統上連接的攝像頭輸出的畫面進行優化,該方法基于Windows系統上的DirectShow開發包,DirectShow是微軟公司推出的流媒體處理開發包,在DirectShow中,使用一種叫做Filter Graph的模型來管理整個數據流的處理過程。該方法包括:
步驟S1:枚舉Windows系統的設備列表中所有攝像頭名稱,在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭。因運行有Windows系統的電腦上可能連接有多個攝像頭,通過此步驟,是為了根據需要確定具體的對Windows系統上的哪個攝像頭的輸出畫面進行調節,并將需要調節的當前攝像頭與Windows設備列表中的攝像頭名稱進行對應,具體的包括:
S1.1:調用CoCreateInstance函數,創建用于枚舉需要進行畫面處理的當前攝像頭設備的ICreateDevEnum接口。CoCreateInstance函數屬于Windows系統中的API(Application Programming Interface,應用程序編程接口),用于使用指定的類標示符創建一未初始化的對象。ICreateDevEnum接口常用于獲取當前Windows系統上安裝的視頻設備。
S1.2:根據ICreateDevEnum接口,然后調用ICreateDevEnum接口中的QueryInterface方法,獲取用于枚舉Windows系統的設備列表中攝像頭名稱的IEnumMoniker接口。IEnumMoniker接口的作用相當于一個枚舉器,利用此接口,可以獲取攝像頭的名稱。
S1.3:在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭,通過在Windows系統的設備列表中攝像頭名稱中找到與當前攝像頭設備的名稱一致的攝像頭名稱,即可在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭。對于當前攝像頭設備的名稱,獲取的方法為:調用IEnumMoniker接口中的Next方法,獲取IMoniker接口,然后調用IMoniker接口中的BindToStorage方法,獲取IPropertyBag接口,然后調用IPropertyBag接口中的Read方法,獲取當前攝像頭設備的名稱。IIPropertyBag接口為存儲屬性的接口。
S1.4:獲取當前攝像頭的IMoniker接口,以供后續步驟的使用。IMoniker接口為DirectShow開發包中的初始節點。
步驟S2:獲取當前攝像頭的屬性控制調節接口,使用第一種調節方法、第二種調節方法和第三種調節方法中的一種或幾種對攝像頭畫面進行處理。第一種調節方法為調用Windows系統中IAMVideoProcAmp接口調節當前攝像頭輸出畫面的亮度;第二種調節方法為調用Windows系統中IAMCameraControl接口調節當前攝像頭輸出畫面的曝光度;第三種調節方法為根據畫面每個像素的像素均值,將像素分為白色類和黑色類,通過增加白色類像素的像素值或降低黑色類像素的像素值增減畫面的對比度。
對當前攝像頭輸出畫面的亮度調節步驟為:
S2.1.1:根據IMoniker接口,獲取用于調節攝像頭輸出畫面亮度的IAmVideoProcAmp接口。IAmVideoProcAmp接口用于控制和調節攝像頭輸出畫面的相關屬性,如亮度、飽和度、對比度等。
S2.1.2:調用IAmVideoProcAmp接口中的Set方法,通過IAmVideoProcAmp接口中的Set方法,可以設置攝像頭輸出畫面某個屬性的值。將攝像頭亮度的枚舉值作為參數傳入Set方法中,完成對當前攝像頭輸出畫面亮度的調節,攝像頭亮度的枚舉值可以根據需要動態設置。
對當前攝像頭輸出畫面的曝光度調節步驟為:
S2.2.1:根據IMoniker接口,獲取用于調節攝像頭輸出畫面曝光度的IAmCameraControl接口。IAmCameraControl接口用于控制和調節攝像頭控制的相關屬性,例如曝光度、縮放、聚焦、傾斜等相關屬性。
S2.2.2:調用IAmCameraControl接口中的Set方法,通過IAmCameraControl接口中的Set方法,可以設置攝像頭輸出畫面某個屬性的值。將攝像頭曝光度的枚舉值作為參數傳入Set方法中,完成對當前攝像頭輸出畫面曝光度的調節。
對當前攝像頭輸出畫面的對比度調節步驟為:
S2.3.1:計算當前攝像頭輸出畫面每個像素的像素均值。每個像素的像素均值計算公式為:
avreage(rgb)=(r+g+b)/3
其中,avreage(rgb)表示像素均值,r為像素的紅色部分,g為像素的綠色部分,b為像素的藍色部分。
S2.3.2:根據像素均值將像素分為白色類和黑色類。像素的分類方法為:
設定分類閥值為128,當avreage(rgb)≥128時,像素為白色類,當avreage(rgb)<128時,像素為黑色類。
S2.3.3:增加白色類像素的像素值,降低黑色類像素的像素值,完成對當前攝像頭輸出畫面曝光度的調節。對于白色類像素和黑色類像素的像素值的調節量可以根據需要動態設定。對于增加白色類像素的像素值的公式為new(white)=cat(white)+deltal,其中,new(white)為調節后的白色類像素的像素值,cat(white)為調節前的白色類像素的像素值,deltal為像素值的調節量。對于增加黑色類像素的像素值的公式為new(black)=cat(black)–delta,其中,new(black)調節后的黑色類像素的像素值,cat(black)為調節前的黑色類像素的像素值,deltal為像素值的調節量。
采用以上方法,當主播在電腦前開啟攝像頭和觀眾進行直播互動時,在Windows系統上直接對攝像頭輸出的畫面進行優化調節。
本發明還公開了一種采用上述攝像頭畫面處理方法的Windows系統上攝像頭畫面處理的系統,包括獲取模塊、調節模塊和輸出模塊。
獲取模塊用于枚舉Windows系統的設備列表中所有攝像頭的攝像頭名稱,并在Windows系統的設備列表中找到需要進行畫面處理的當前攝像頭;調節模塊用于對當前攝像頭輸出畫面屬性的亮度、曝光度和對比度中的一個或多個進行調節;輸出模塊用于輸出調節后的攝像頭畫面,具體的是輸出模塊將調節后的攝像頭畫面輸出給運行在Windows上的直播軟件,直播軟件將畫面傳輸給服務器,用戶訪問服務器即可觀看直播。調節模塊可以根據人為設定的參數值,對攝像頭輸出畫面的各項屬性進行調節。
調節模塊調用Windows系統中IAMVideoProcAmp接口和IAMCameraControl接口分別調節當前攝像頭輸出畫面的亮度屬性和曝光度屬性。當前攝像頭輸出畫面的對比度屬性的調節方法為:根據畫面每個像素的像素均值,將像素分為白色類和黑色類,通過增加白色類像素的像素值或降低黑色類像素的像素值增減畫面的對比度。
本發明不局限于上述實施方式,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發明的保護范圍之內。本說明書中未作詳細描述的內容屬于本領域專業技術人員公知的現有技術。