Closed A5rZ closed 8 months ago
哈哈哈抱歉现在才看到,感谢提供的思路,我想过自己渲染地图,但主要是懒想用网站的任务地点标记啥的😂,联机确实有点抽象现在至少能用了,先就这样吧。 主要是我今年高考没什么时间,我对口升学3月份就放假,到时候在来重写吧🤣
简单写了一些func来实现文件名读取,坐标变换和坐标显示图片合成。
截图读取 ` def Read_Screenshoot():
pathname = r'C:\Users\xxxxxx\Documents\Escape from Tarkov\Screenshots'
file_lists = os.listdir(pathname) file_lists.sort( key=lambda fn: os.path.getmtime(pathname + "\" + fn) if not os.path.isdir(pathname + "\" + fn) else 0)
filename_latest = file_lists[-1] return filename_latest`
2.提取截图文件名的坐标
` def Extractlocation(filename):
# 先根据下划线符号对文件名进行拆分,并提取到substring
symbol = '_'
position = filename.find(symbol)
substring = filename[position+1:]
position = substring.find(symbol)
substring = substring[:position]
# 使用正则表达式提取需要的字段并转换成数字格式
pattern = r'\-?\d+\.?\-?\d+'
numbers = re.findall(pattern, substring)
axis= (float(numbers[0]),float(numbers[2]))
# 返回坐标值
return axis`
3.地图帧合成,这个我只会用cv2做图片,我猜应该有更高效的方法,这里抛砖引玉了。
`
def Draw_Location(axis):
# 读取图像文件并转换为RGB格式,这里是地图文件的图片
image = cv2.imread('Street.jpg')
# 创建与原始图像相同大小且类型为RGB的空白图像
blank_image = np.zeros(image.shape[:3], dtype=np.uint8)
# 定义坐标点的RGB值
red = (0, 255, 0)
# 选择想要添加坐标点的位置
# 根据导入地图图片像素确认截图坐标位置+1时在图片上变化的坐标需要乘的比例系数
proportion_x = ???
proportion_y = ???
# 导入的地图图片的尺寸
size_x = ???
size_y = ???
axis_x = axis[0]*proportion_x
axis_y = axis[1]*proportion_y
x = size_x = size_x-axis_x
y = size_y+axis_y
x = int(x)
y = int(y)
# 在指定位置处绘制坐标点
cv2.circle(blank_image, (x, y), radius=10, color=(red),thickness=-1)
# 合并原始图像和新生成的图像
result = cv2.addWeighted(image, alpha=1, src2=blank_image, beta=1, gamma=0)
cropped = result[y-600:y+600, x-600:x+600]、
# 图像缩放
ReResult = cv2.resize(cropped, (500, 500))
# 显示最终结果图像,这里用up的视频里的工具将显示的窗口定义为悬浮窗即可。
cv2.imshow("Map", ReResult)
key = cv2.waitKey(0)
cv2.destroyWindow('Map')`
简单写了一些func来实现文件名读取,坐标变换和坐标显示图片合成。
截图读取 ` def Read_Screenshoot():
截图文件夹路径
pathname = r'C:\Users\xxxxxx\Documents\Escape from Tarkov\Screenshots'
建立一个列表读取文件夹中的文件名
file_lists = os.listdir(pathname) file_lists.sort( key=lambda fn: os.path.getmtime(pathname + "\" + fn) if not os.path.isdir(pathname + "\" + fn) else 0)
最新的文件名
filename_latest = file_lists[-1] return filename_latest`
2.提取截图文件名的坐标
` def Extractlocation(filename):
# 先根据下划线符号对文件名进行拆分,并提取到substring symbol = '_' position = filename.find(symbol) substring = filename[position+1:] position = substring.find(symbol) substring = substring[:position] # 使用正则表达式提取需要的字段并转换成数字格式 pattern = r'\-?\d+\.?\-?\d+' numbers = re.findall(pattern, substring) axis= (float(numbers[0]),float(numbers[2])) # 返回坐标值 return axis`
3.地图帧合成,这个我只会用cv2做图片,我猜应该有更高效的方法,这里抛砖引玉了。
` def Draw_Location(axis): # 读取图像文件并转换为RGB格式,这里是地图文件的图片 image = cv2.imread('Street.jpg') # 创建与原始图像相同大小且类型为RGB的空白图像 blank_image = np.zeros(image.shape[:3], dtype=np.uint8) # 定义坐标点的RGB值 red = (0, 255, 0) # 选择想要添加坐标点的位置 # 根据导入地图图片像素确认截图坐标位置+1时在图片上变化的坐标需要乘的比例系数 proportion_x = ??? proportion_y = ??? # 导入的地图图片的尺寸 size_x = ??? size_y = ??? axis_x = axis[0]*proportion_x axis_y = axis[1]*proportion_y x = size_x = size_x-axis_x y = size_y+axis_y x = int(x) y = int(y) # 在指定位置处绘制坐标点 cv2.circle(blank_image, (x, y), radius=10, color=(red),thickness=-1) # 合并原始图像和新生成的图像 result = cv2.addWeighted(image, alpha=1, src2=blank_image, beta=1, gamma=0) cropped = result[y-600:y+600, x-600:x+600]、 # 图像缩放 ReResult = cv2.resize(cropped, (500, 500)) # 显示最终结果图像,这里用up的视频里的工具将显示的窗口定义为悬浮窗即可。 cv2.imshow("Map", ReResult) key = cv2.waitKey(0) cv2.destroyWindow('Map')`
感谢思路,这几天试试看
我以为作者重新写了地图和游戏实际定位映射关系。没想到是eng访问网站。不错的思路hahahahaha
我以为作者重新写了地图和游戏实际定位映射关系。没想到是eng访问网站。不错的思路hahahahaha
哈哈哈最偷懒的一集
联机部分写的有点抽象,没有服务器端文件先写了用户端?还是有没发布? 或许可以尝试自行解析不依赖网站?文件名字的解析并不复杂,实现分层地图,和镜头方向,在小地图上标注附近物资点?