一.代码
1.初始化
!pip install -q condacolab
import condacolab
condacolab.install()
# After restarting, ignore the warning it is normal
import condacolab
condacolab.check()
2.下载gprmax
!git clone https://github.com/gprMax/gprMax.git
!ls
3.下载pycuda
!pip install pycuda
4.?
!ls
5.下载gprmax
%cd gprMax #%cd 不是% cd(没空格)
!mamba env update -n base -f conda_env.yml
# build
!conda activate gprMax
!python setup.py build
!python setup.py install
6.加载Google drive
from google.colab import drive
drive.mount('/content/drive')
7.加载opencv包
!pip3 install opencv-python
8.先cd到工作目录,如何运行python(.in文件要与simulation文件在一起)
%cd /content/drive/MyDrive/
!python simulation.py
simulation文件如下
import sys
import cv2
import matplotlib.animation as animation
sys.path.append('D:/my_gprmax/gprMax') # 将gprMax安装路径添加到系统路径中,以便能够导入gprMax模块
import os
from gprMax.gprMax import api # 导入gprMax库的api模块
import numpy as np
from tools.plot_Bscan import get_output_data, mpl_plot # 导入模块tools.plot_Bscan中的get_output_data和mpl_plot函数
from tools.outputfiles_merge import merge_files # 导入模块tools.outputfiles_merge中的merge_files函数
import matplotlib.pyplot as plt # 导入matplotlib.pyplot库
root = 'D:/gprmax_code/model' # 1. 设定输入文件夹路径
files = os.listdir(root) # 获取文件夹中的文件列表
for file in files:
if file.endswith('.in'): # 如果文件以.in结尾
num_scan = 50 # 设定道数
# print(file)
filename = root + '/' + file # 构建完整的文件路径
fi = filename[0:-3] # 去除文件名后的.txt后缀,保留路径
api(filename, n=num_scan,gpu={0}) # 调用gprMax库的api函数进行模拟计算,给定mpi参数
merge_files(fi, removefiles=True) # 合并输出文件
'''B扫描绘图'''
# 获取回波数据
filename_b = fi + '_merged.out' # 合并后的输出文件名
rxnumber = 1 # 接收器编号
rxcomponent = 'Ez' # 接收器分量
outputdata, dt = get_output_data(filename_b, rxnumber, rxcomponent) # 获取输出数据和采样间隔
fi2 = fi.split('/')[-1] # 获取文件名,去除路径部分
# 将数据分割成每100列一组
split_outputdata = np.hsplit(outputdata, outputdata.shape[1] // 10)
# 创建一个视频编写器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter('D:/gprmax_code/model/' + fi2 + '.mp4', fourcc, 20.0, (10, outputdata.shape[0]))
for i, data in enumerate(split_outputdata):
# 绘图
fig = plt.figure()
im = plt.imshow(data, extent=[0, data.shape[1], data.shape[0], 0], interpolation='quadric',
aspect='auto', cmap='gray',
vmin=-np.amax(np.abs(data)), vmax=np.amax(np.abs(data)))
# 将matplotlib图像转换为OpenCV图像
fig.canvas.draw()
img = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
img = img.reshape(fig.canvas.get_width_height()[::-1] + (3,))
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
# 将图像写入视频
video.write(img)
# 关闭视频编写器
video.release()
# plt.show()
防掉线
(1)进入Colab的notebook界面,按快捷键F12,打开开发者模式,选择console
中文版选择控制台
(2)复制并运行代码
复制下面的代码,粘贴在上图下方的红框处,然后回车(enter)
function ClickConnect(){
console.log("Working");
document
.querySelector("#top-toolbar > colab-connect-button")
.shadowRoot
.querySelector("#connect")
.click()
}
setInterval(ClickConnect,60000)
!!!!本文转载自https://groups.google.com/g/gprmax/c/J363MrfALq4
侵权 contact me