最近涉及一个检测任务,今天涉及到视频拆分为图片序列,以及crop后的图片序列再合并为视频的工作。
总结如下:
1. 导包的问题。 python中写脚本时,同级目录中可以直接引用,比如 import utils(不用加.py), 如果i2v.py要用到utils中的函数,需要引入的是from utils import i2v
2. 服务器scp的问题。无论如何都是在本地机器运行scp。从本地传输到服务器为 scp 本地路径 服务器用户名@服务器ip:服务器路径;从服务器传输到本地只是调用两者顺序
3.一些os.path的函数。在win和linux中,路径问题可以统一用 / ,在win电脑中如此写法也不会报错;os.path.join()可以实现路径的拼接,其中可以自动添加分割符;os.path.sep会视操作不同为不同的符号,用法主要是os.path.sep.join() ; os.path.split()可以拆分出路径和文件名; os.path.exists(), 可以判断路径下的文件或者文件夹是否存在, 如果存在快速删除可以用shutil.rmtree(out_img_path);os.mkdir(out_img_path)可以建立文件夹,如果已经有该文件夹会报错;os.path.isdir()判断是否是目录; os.path.isfile()判断是否是文件;
4. 一些os的函数。os.listdir(path)可以列出path路径下的所有文件及文件夹名, 需要注意的是返回的一般是无需的, 后面需要写一个列表的sort排序的代码,例如 filelist.sort(key=lambda x:int(x[:-4])); os.getcwd()可以列出当前文件所在的文件夹路径; os.chdir(os.pardir)可以切换当前工作路径为其上级路径。
5. 一些字符串的技巧 。文件后缀判断可以用.endswith('jpg')等判断; 补零可以用 str(i).zfill(5)
待补充的
6. 一些还需要再整理的函数, cv2.VideoCapture(in_video_path); cv2.waitKey(1); cv2.VideoWriter;
img = cv2.imread(item), video.write(img)