Source code for airtest.aircv.cal_confidence

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""These functions calculate the similarity of two images of the same size."""


import cv2
import numpy as np
from .utils import img_mat_rgb_2_gray


[docs]def cal_ccoeff_confidence(im_source, im_search): """求取两张图片的可信度,使用TM_CCOEFF_NORMED方法.""" # 扩展置信度计算区域 im_source = cv2.copyMakeBorder(im_source, 10,10,10,10,cv2.BORDER_REPLICATE) # 加入取值范围干扰,防止算法过于放大微小差异 im_source[0,0] = 0 im_source[0,1] = 255 im_source, im_search = img_mat_rgb_2_gray(im_source), img_mat_rgb_2_gray(im_search) res = cv2.matchTemplate(im_source, im_search, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) return max_val
[docs]def cal_rgb_confidence(img_src_rgb, img_sch_rgb): """同大小彩图计算相似度.""" # 减少极限值对hsv角度计算的影响 img_src_rgb = np.clip(img_src_rgb, 10, 245) img_sch_rgb = np.clip(img_sch_rgb, 10, 245) # 转HSV强化颜色的影响 img_src_rgb = cv2.cvtColor(img_src_rgb, cv2.COLOR_BGR2HSV) img_sch_rgb = cv2.cvtColor(img_sch_rgb, cv2.COLOR_BGR2HSV) # 扩展置信度计算区域 img_src_rgb = cv2.copyMakeBorder(img_src_rgb, 10,10,10,10,cv2.BORDER_REPLICATE) # 加入取值范围干扰,防止算法过于放大微小差异 img_src_rgb[0,0] = 0 img_src_rgb[0,1] = 255 # 计算BGR三通道的confidence,存入bgr_confidence src_bgr, sch_bgr = cv2.split(img_src_rgb), cv2.split(img_sch_rgb) bgr_confidence = [0, 0, 0] for i in range(3): res_temp = cv2.matchTemplate(src_bgr[i], sch_bgr[i], cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res_temp) bgr_confidence[i] = max_val return min(bgr_confidence)