本发明涉及图像处理领域,具体涉及一种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接口分别调节当前摄像头输出画面的亮度属性和曝光度属性。当前摄像头输出画面的对比度属性的调节方法为:根据画面每个像素的像素均值,将像素分为白色类和黑色类,通过增加白色类像素的像素值或降低黑色类像素的像素值增减画面的对比度。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。