当前位置: 首页 > 知识库问答 >
问题:

作为模块导入其他Python脚本

梁烨烨
2023-03-14
import extractor
extractor()
import extractor
extractor()
import cv2
import os
import face_recognition
from PIL import Image
import multiprocessing

try:
    if not os.path.exists('frames'):
        os.makedirs('frames')
except OSError:
    print('Error: Creating directory of frames')

try:
    if not os.path.exists('faces'):
        os.makedirs('faces')
except OSError:
    print('Error: Creating directory of faces')

def extract_frames(video_file_path):
    currentFrame_extract = 1
    video_capture = cv2.VideoCapture(video_file_path)

    while(True):
        ret, frame = video_capture.read()
        if ret == False:
            break
        name = 'frames/frame_' + str(currentFrame_extract) + '.jpg'
        print(f"Extracting Frame {currentFrame_extract}, saving it as Frame_{currentFrame_extract}.jpg")
        cv2.imwrite(name, frame)
        currentFrame_extract += 1

    video_capture.release()
    cv2.destroyAllWindows()
    return currentFrame_extract

def find_faces_a(a):
    i = 0
    currentFrame = 1

    while (True):

        if a > currentFrame:

            image = face_recognition.load_image_file(f"data/frame_{currentFrame}.jpg")
            face_locations = face_recognition.face_locations(image)

            if len(face_locations) >= 1:
                top, right, bottom, left = face_locations[0]

                face_image = image[top:bottom, left:right]
                pil_image = Image.fromarray(face_image)
                pil_image.save(f"faces/face_{currentFrame}.jpg".format(i))
                print(f"Found a face at Frame_{currentFrame}, exporting it as Face_{currentFrame}.jpg")

            currentFrame += 4
        else:
            break

def find_faces_b(a):
    i = 0
    currentFrame = 2

    while (True):

        if a > currentFrame:

            image = face_recognition.load_image_file(f"data/frame_{currentFrame}.jpg")
            face_locations = face_recognition.face_locations(image)

            if len(face_locations) >= 1:
                top, right, bottom, left = face_locations[0]

                face_image = image[top:bottom, left:right]
                pil_image = Image.fromarray(face_image)
                pil_image.save(f"faces/face_{currentFrame}.jpg".format(i))
                print(f"Found a face at Frame_{currentFrame}, exporting it as Face_{currentFrame}.jpg")

            currentFrame += 4
        else:
            break

def find_faces_c(a):
    i = 0
    currentFrame = 3

    while (True):

        if a > currentFrame:

            image = face_recognition.load_image_file(f"data/frame_{currentFrame}.jpg")
            face_locations = face_recognition.face_locations(image)

            if len(face_locations) >= 1:
                top, right, bottom, left = face_locations[0]

                face_image = image[top:bottom, left:right]
                pil_image = Image.fromarray(face_image)
                pil_image.save(f"faces/face_{currentFrame}.jpg".format(i))
                print(f"Found a face at Frame_{currentFrame}, exporting it as Face_{currentFrame}.jpg")

            currentFrame += 4
        else:
            break

def find_faces_d(a):
    i = 0
    currentFrame = 4

    while (True):

        if a > currentFrame:

            image = face_recognition.load_image_file(f"data/frame_{currentFrame}.jpg")
            face_locations = face_recognition.face_locations(image)

            if len(face_locations) >= 1:
                top, right, bottom, left = face_locations[0]

                face_image = image[top:bottom, left:right]
                pil_image = Image.fromarray(face_image)
                pil_image.save(f"faces/face_{currentFrame}.jpg".format(i))
                print(f"Found a face at Frame_{currentFrame}, exporting it as Face_{currentFrame}.jpg")

            currentFrame += 4
        else:
            break

if __name__ == "__main__":

    video_file_path = "Video_3.mp4"
    currentFrame_extract = extract_frames(video_file_path)

    currentFrame_extract = [currentFrame_extract]
    p1 = multiprocessing.Process(target=find_faces_a, args=(currentFrame_extract))
    p2 = multiprocessing.Process(target=find_faces_b, args=(currentFrame_extract))
    p3 = multiprocessing.Process(target=find_faces_c, args=(currentFrame_extract))
    p4 = multiprocessing.Process(target=find_faces_d, args=(currentFrame_extract))

    p1.start()
    p2.start()
    p3.start()
    p4.start()

    p1.join()
    p2.join()
    p3.join()
    p4.join()

    print("Frame extraction and alignment finished successfully.")

共有1个答案

余阳秋
2023-03-14

可以运行extractor.py,方法是将if_name__==“__main__”:转换为新函数def extractor()并导入模块:

import extractor;
extractor.extractor();

您也只能通过使用以下导入变体导入特定名称(在本例中为extractor()函数):

from extractor import extractor;
extractor();

请查看这个链接(https://repl.it/repls/measlymerrysymbol),我在这里做了一个类似于文件的示例导入。

 类似资料:
  • 问题内容: 我注意到我今天想解释的东西很奇怪。我不是100%不确定如何将其表达为一个问题,所以google是不可能的。由于某些奇怪的原因,日志记录模块无权访问模块logging.handlers。如果您不相信我,请自己尝试: 谁能解释为什么会这样? 问题答案: 在Python中,需要先导入模块,然后才能对其进行访问。仅导入日志记录模块。碰巧这是一个带有子模块的软件包,但是那些子模块仍然不会自动加载

  • 我注意到一些看似奇怪的行为,当试图以不同的方式导入名为rmod2的python模块时。如果我从rmod2.py文件所在的目录启动python,它可以正常工作。但是,如果我将文件移动到其他模块所在的另一个文件夹,它不再按预期工作。模块/包文件夹 /usr/lib/pymodules/python2.7,它也包含在sys.path.中,所以我创建了文件夹 /usr/lib/pymodules/pyth

  • 该部分 API 将帮助您使用其他 mBuild 电子模块。 注意:你需要额外购买包含 mBuild 电子模块扩展包或套装来获得 mBuild 模块以使用这些功能。 省略代码中的halocode 注意:该部分 API 省略了“halocode.”,本篇提及的所有 API 均省略了“halocode.” ,如 led_driver.off( )实际为halocode.led_driver.off()。

  • 包括目录中的所有模块,而中的模块通过包括 在运行时,上面的操作很好。但是,和也作为它们自己的脚本工作,但是运行会出现错误 从导入中删除可以使各个脚本正常工作,但主脚本找不到。 我如何使导入对主程序和单个模块都起作用?

  • 主要内容:import 模块名 as 别名,from  模块名 import 成员名 as 别名使Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。 前面章节中,已经看到使用 import 导入模块的语法,但实际上

  • 我需要在Python中导入一个名为array_queue的模块。我检查了一下,如果我不使用它,就会出现一个提示:“array_queue imported but unused”。但是,如果我使用它并运行该程序,则会出现以下情况: ModuleNotFounderRror:没有名为“array_queue”的模块