opencv库的使用
cv2.imread(filepath,flags):读入一张图像
- filepath:要读入图片的完整路径
- flags:读入图片的标志
- cv2.IMREAD_COLOR:默认参数,值为1,读入一副彩色图片,忽略alpha通道
- cv2.IMREAD_GRAYSCALE:值为0,读入灰度图片,
- cv2.IMREAD_UNCHANGED:值为-1,读入完整图片,包括alpha通道
cv2.imshow(wname,img):显示图像
- wname:显示图像窗口的名字
- img:要显示的图像,窗口大小自动调整为图片大小
cv2.imwrite(file,img,num):保存一张图像
- file:要保存的文件名
- img:保存的图像
- num:压缩的级别,默认为3
cv2.cvtColor(img,code) :图像颜色空间转换
- img:要转换的图片
- code:要转换颜色的数值
- cv2.COLOR_RGB2GRAY:彩色图像转化为灰度图像
- cv2.COLOR_GRAY2RGB:灰度图像转化为彩色图像
- # cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS
cv2.matchTemplate(img,templ,method):模板匹配
- img:待搜索图像
- templ:搜索模板,需和原图一样的数据类型且尺寸不能大于源图像
- method:指定的匹配方法
- CV_TM_SQDIFF----平方差匹配法(最好匹配0)
- CV_TM_SQDIFF_NORMED----归一化平方差匹配法(最好匹配0)
- CV_TM_CCORR----相关匹配法(最坏匹配0)
- CV_TM_CCORR_NORMED----归一化相关匹配法(最坏匹配0)
- CV_TM_CCOEFF----系数匹配法(最好匹配1)
- CV_TM_CCOEFF_NORMED----归一化相关系数匹配法(最好匹配1)
计算滑动距离:
def get_distance(bg_img_path,slider_img_path): """获取滑块移动距离""" #背景图片处理 bg_img = cv.imread(bg_img_path, 0) #读入灰度图片 bg_img = cv.GaussianBlur(bg_img, (3, 3), 0) #高斯模糊去噪 bg_img = cv.Canny(bg_img, 50, 150) #Canny算法进行边缘检测 #滑块做同样处理 slider_img = cv.imread(slider_img_path, 0) slider_img = cv.GaussianBlur(slider_img, (3, 3), 0) slider_img = cv.Canny(slider_img, 50, 150) # 寻找最佳匹配 res = cv.matchTemplate(bg_img, slider_img, cv.TM_CCOEFF_NORMED) # 最小值,最大值,并得到最小值, 最大值的索引 min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res) #例如:(-0.05772797390818596, 0.30968162417411804, (0, 0), (196, 1)) top_left = max_loc[0] # 横坐标 # 展示圈出来的区域 # w, h = image.shape[::-1] # 宽高,例如(320, 160) # cv.rectangle(template, (x, y), (x + w, y + h), (7, 249, 151), 2) # cv.imshow('Show', bg_img) # cv.waitKey(0) # cv.destroyAllWindows() return top_left