- 白屏检测:使用OpenCV来判断,首先通过pyautogui库获取屏幕截图,然后将其转成灰度图像,接着计算灰度图像的平均值,如果平均值大于阈值则为白屏
import cv2 import numpy as np import pyautogui # 获取屏幕截图 screenshot = pyautogui.screenshot() screenshot = np.array(screenshot) screenshot = cv2.cvtColor(screenshot, cv2.COLOR_RGB2BGR) # 转换为灰度图像 gray = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY) # 计算灰度图像的平均值 average_color = np.mean(gray) # 设置白屏的阈值 threshold = 200 # 这里可以根据实际情况调整 # 判断屏幕是否为白屏 if average_color > threshold: print("屏幕为白屏") else: print("屏幕不是白屏")
- 图像对比:使用OpenCV来进行对比,将两张图片都转成灰度图像,使用SIFT特征检测器来提取关键点和描述符,使用暴力匹配器BFMacher来匹配这些描述符,最后根据匹配的数量计算了图片的相似度
import cv2 # 加载两张图片 image1 = cv2.imread('image1.jpg') image2 = cv2.imread('image2.jpg') # 将图片转换为灰度图像 gray_image1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY) gray_image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY) # 计算两张灰度图像的结构相似度指数(SSIM) sift = cv2.SIFT_create() keypoints_1, descriptors_1 = sift.detectAndCompute(gray_image1, None) keypoints_2, descriptors_2 = sift.detectAndCompute(gray_image2, None) bf = cv2.BFMatcher() matches = bf.knnMatch(descriptors_1, descriptors_2, k=2) good_matches = [] for m, n in matches: if m.distance < 0.75 * n.distance: good_matches.append([m]) similarity = len(good_matches) / len(keypoints_1) * 100 print("图片相似度: {:.2f}%".format(similarity))
自动化技术-图像识别
于 2024-05-28 20:33:20 首次发布