

思路所需库 OpenCV-Python、requests
# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import cv2
import numpy as np
import requests
def download_image(url):
"""从网络下载图片"""
response = requests.get(url)
if response.status_code != 200:
raise Exception(f"无法下载图片,HTTP状态码: {response.status_code}")
# 将响应内容转换为字节流,然后转换为numpy数组
image_data = np.frombuffer(response.content, dtype=np.uint8)
# 使用OpenCV解码图片
image = cv2.imdecode(image_data, cv2.IMREAD_COLOR)
return image
def find_gap_position(bg_url, gap_url):
"""
从网络下载背景图和缺口图,并计算缺口位置
参数:
bg_url: 背景图的URL
gap_url: 缺口图的URL
返回:
缺口位置的X坐标
"""
# 下载图片
bg_image = download_image(bg_url)
gap_image = download_image(gap_url)
# 转换为灰度图
bg_gray = cv2.cvtColor(bg_image, cv2.COLOR_BGR2GRAY)
gap_gray = cv2.cvtColor(gap_image, cv2.COLOR_BGR2GRAY)
# 使用边缘检测
bg_edge = cv2.Canny(bg_gray, 100, 200)
gap_edge = cv2.Canny(gap_gray, 100, 200)
# 模板匹配
result = cv2.matchTemplate(bg_edge, gap_edge, cv2.TM_CCOEFF_NORMED)
# 寻找最佳匹配位置
_, max_val, _, max_loc = cv2.minMaxLoc(result)
print(f"匹配度: {max_val}")
gap_x = max_loc
# 可视化结果(可选,用于调试)
# 在背景图上绘制矩形标记识别到的位置
# h, w = gap_edge.shape
# top_left = max_loc
# bottom_right = (top_left[0] + w, top_left[1] + h)
# cv2.rectangle(bg_image, top_left, bottom_right, (0, 255, 0), 2)
# 显示结果
# cv2.imshow('Detected Position', bg_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
return gap_x
def main(args):
pass