Python reads all picture names and writes them into txt files, and uses opencv to play them into videos

  1. Read the picture name in the directory

    import os
    import sys
    import argparse
    
    if __name__ == "__main__":
        parser = argparse.ArgumentParser(description="读取输入文件夹下的文件名, 写入txt文件")
        parser.add_argument('dirname', type = str, default = '')
        args = parser.parse_args()
        dirname = args.dirname
        if not os.path.exists(dirname):
            print("error: directory ", dirname, " not exits!")
            sys.exit()
        else:
            print("successful: directory ", dirname, " exist")
        file = open(dirname+"\\filenames.txt", "w")
        ## 读取文件夹dirname下的文件和子文件夹,并判断是文件还是文件夹
        names = os.listdir(dirname)
        for name in names:
            # path = os.path.join(dirname, name)  ##很有必要,不然结果会不对
            if name.split('.')[-1]=='png': ##png格式的图片才写入,可以改成jpg
                file.write("{0}\n".format(name))
        file.close()
    
  2. read pictures and play

    import os
    import argparse
    import cv2
    
    if __name__ == "__main__":
        parser = argparse.ArgumentParser()
        #文件夹里有图片和写入图片名的txt文件
        parser.add_argument("dir_name")
        args = parser.parse_args()
        dir_name = args.dir_name
        image_files = []
        with open(dir_name + "\\filenames.txt", "r") as f:
            for line in f.readlines():
                line = line.strip('\n')
                image_files.append(line)
        N = len(image_files)
        cv2.namedWindow("image_video", cv2.WINDOW_AUTOSIZE)
        for i in image_files:
            image_file = os.path.join(dir_name, i)
            image = cv2.imread(image_file, cv2.IMREAD_UNCHANGED)
            cv2.imshow("image_video", image)
            ##帧率为1000/50 = 20 pfs
            key = cv2.waitKey(50)
            ##点击q或Esc退出
            if key & 0xFF == ord('q') or key == 27:
                cv2.destroyAllWindows()
                break
    

Guess you like

Origin blog.csdn.net/qq_41253960/article/details/128268787