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