一种屏幕颜色识别系统的识别方法
文献发布时间:2023-06-19 09:29:07
技术领域
本发明涉及一种屏幕颜色识别系统的识别方法。
背景技术
在日常生活中,色盲人群虽然只会占据总人数的很小一部分,但是该部分人群在日常使用电脑、电视、手机甚至一些普遍的电子类产品的时候,往往无法分辨所浏览的主体的正确颜色,这往往会导致不便利的情况发生,比如,需要红绿色盲用户点击红色按钮时,用户往往无法直接辨认哪个按钮为红色。
发明内容
为解决上述技术问题,本发明提供了一种屏幕颜色识别系统的识别方法。
本发明通过以下技术方案得以实现。
本发明提供的一种屏幕颜色识别系统的识别方法,其步骤为:
1)系统启动;
2)对电子产品屏幕进行实时取帧;
3)对屏幕主体物体的颜色进行识别并将颜色进行文字标注。
所述步骤2)中取帧采用OpenCV软件库,并对屏幕帧进行边缘提取,并对提取后的边缘进行锐化、光滑处理。。
所述步骤3)中颜色的识别步骤为:
3.1)通过OpenCV软件库物体特征库进行搜索比对识别出主体的轮廓;若软件库中无法识别出物体,则将屏幕帧中封闭边缘图像作为主体物;
3.2)获取主体物的每个像素RGB值,对RGB值相似的区域作为颜色一致或者相似处理;
3.3)在识别出颜色的区域使用文字标记出该颜色。
所述RGB值和颜色的对应关系为ASCII对照表。
所述OpenCV的主体轮廓提取识别步骤为:
3.1.1)在OpenCV库中调用findContours()函数查找轮廓;
3.1.2)调用drawContours()画轮廓并进行轮廓填充;
3.1.3)计算轮廓的面积和周长;
3.1.4)提取轮廓凸包,矩形,最小外接矩形,外接圆;
3.1.5)将获取到的轮廓与数据库中的图片进行对比,若对比的两者相似度达到设置的阈值则认为主体提取成功。
图片相似度值对比方法为:
3.1.5.1)使用python函数Image.open(path)分别读取对比库中的图像和需要对比的图像。
3.1.5.2)计算两幅图片的均方差MSE:
def mse(imageA,imageB):
err=np.sum((imageA.astype("float")-imageB.astype("float"))**2)
err/=float(imageA.shape[0]*imageA.shape[1])
return err
使用compare_ssim函数计算两幅图片的SSIM值:
from skimage.measure import compare_ssim as ssim
3.1.5.3)计算出的MSE值越小,则两图像越相似,或SSIM在[-1,1]之间,则代表两图像相似。
所述阀值为MSE<1或1>SSIM>-1。
本发明的有益效果在于:可以给色盲用户提供电子产品屏幕上显示的物体的颜色辨别,以文字形式标记出屏幕主体或者用户感兴趣的屏幕区域的颜色,帮助色盲用户有效地辨别电子产品上显示的颜色,让色盲用户更好地生活学习,避免了因为颜色无法确认导致的各种不便和问题。
附图说明
图1是本发明的系统识别流程图;
图2是本发明的电子屏幕显示图;
图3是本发明的提取的图2的轮廓图;
图4是本发明的提取的主体图片。
具体实施方式
下面进一步描述本发明的技术方案,但要求保护的范围并不局限于所述。
一种屏幕颜色识别系统的识别方法,其步骤为:
1)系统启动;
2)对电子产品屏幕进行实时取帧;
3)对屏幕主体物体的颜色进行识别并将颜色进行文字标注。
所述步骤2)中取帧采用OpenCV软件库,并对屏幕帧进行边缘提取,并对提取后的边缘进行锐化、光滑处理。。
所述步骤3)中颜色的识别步骤为:
3.1)通过OpenCV软件库物体特征库进行搜索比对识别出主体的轮廓;若软件库中无法识别出物体,则将屏幕帧中封闭边缘图像作为主体物;
3.2)获取主体物的每个像素RGB值,对RGB值相似的区域作为颜色一致或者相似处理;
3.3)在识别出颜色的区域使用文字标记出该颜色。
所述RGB值和颜色的对应关系为ASCII对照表,不同的RGB值对应何种颜色,在系统设计初始需要定义,如红色对应RGB值为(256,0,0),则可定义类红色区域为(256±x,0±x,0±x),x为微调偏移量。
如图2~4所示,所述OpenCV的主体轮廓提取识别步骤为:
3.1.1)在OpenCV库中调用findContours()函数查找轮廓;
3.1.2)调用drawContours()画轮廓并进行轮廓填充;
3.1.3)计算轮廓的面积和周长;
3.1.4)提取轮廓凸包,矩形,最小外接矩形,外接圆;
3.1.5)将获取到的轮廓与数据库中的图片进行对比,若对比的两者相似度达到设置的阈值则认为主体提取成功。
图片相似度值对比方法为:
3.1.5.1)使用python函数Image.open(path)分别读取对比库中的图像和需要对比的图像。
3.1.5.2)计算两幅图片的均方差MSE:
def mse(imageA,imageB):
err=np.sum((imageA.astype("float")-imageB.astype("float"))**2)
err/=float(imageA.shape[0]*imageA.shape[1])
return err
使用compare_ssim函数计算两幅图片的SSIM值:
from skimage.measure import compare_ssim as ssim
3.1.5.3)计算出的MSE值越小,则两图像越相似,或SSIM在[-1,1]之间,则代表两图像相似。
- 一种屏幕颜色识别系统的识别方法
- 车体颜色识别系统和车辆以及车体颜色识别方法