Как дифференцировать и хранить дифференцированные кадры в указанном месте - PullRequest
0 голосов
/ 04 апреля 2019

Приложил исходный код для дифференцирования кадров и сохранения дифференцированных кадров в указанном месте, но получаю ошибку в отступе ошибки .. опубликуйте эту проблему как вопрос в переполнении стека. Я ограничен вопросом для конкретноготочка ... загрузить код тоже

filename.py

import cv2
import os
import glob 

def extractFrames(pathIn, pathOut):
os.mkdir(pathOut)

cap = cv2.VideoCapture(pathIn)
count = 0

while (cap.isOpened()):

    # Capture frame-by-frame
    ret, frame = cap.read()

    current_frame_gray = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY)
    previous_frame_gray = cv2.cvtcolor(previous_frame, cv2.COLOR_BGR2GRAY)

    frame_diff = cv2.absdiff(current_frame_gray,previous_frame_gray)        
    if ret == True:

        print('Read %d frame: ' % count, ret)
        cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame_diff)  # save frame as JPEG file

        count += 1
    else:
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
def main():
extractFrames('C:/Users/yaazmoha/Desktop/BE PROJECT/INPUT/Tiger in field(1080P_HD).mp4', 'fd3')
if __name__=="__main__":
main()

1 Ответ

0 голосов
/ 04 апреля 2019

Исправил ваш код. У вас были некоторые ошибки отступа. Поскольку Python не использует фигурные скобки, такие как C ++, он требует правильного отступа для разделения кода.

import cv2
import os
import glob 

def extractFrames(pathIn, pathOut):
    os.mkdir(pathOut)

    cap = cv2.VideoCapture(pathIn)
    count = 0

    while (cap.isOpened()):

        # Capture frame-by-frame
        ret, current_frame = cap.read()

        current_frame_gray = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY)
        if count > 1:
            previous_frame_gray = cv2.cvtcolor(previous_frame, cv2.COLOR_BGR2GRAY)

            frame_diff = cv2.absdiff(current_frame_gray,previous_frame_gray)        
            if ret == True:

                print('Read %d frame: ' % count, ret)
                cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame_diff)  # save frame as JPEG file

                count += 1
            else:
                break

        previous_frame = current_frame

    # When everything done, release the capture
    cap.release()
    cv2.destroyAllWindows()

def main():
    extractFrames(r"C:\Users\mathesn\Downloads\Wildlife.mp4", 'fd3')

if __name__=="__main__":
    main()

Я взял на себя смелость исправить другие разделы вашего кода. Но есть некоторые другие исправления, которые нужны этому коду, такие как создание каталога, только если он не существует, поддержка цветной версии фрейма, чтобы cv2.cvtColor() не работала, и т. Д., Но я оставлю их для вы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...