12

I am trying to save a video in a specific folder. but after running the code no output is saved. Could anyone help? Thanks.

cap = cv2.VideoCapture(file_paths[0])
fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()
fourcc = cv2.VideoWriter_fourcc(*'XVID')
name = "C:\jupyter_projects\Test Folder\Intention dataset\background_subtracted\out.mp4"
out = cv2.VideoWriter(name,fourcc, 20,(320,180),False)

while(1):
    ret, frame = cap.read()
    if (ret == True):
        resized_frame = cv2.resize(frame,(320,180),fx=0,fy=0, interpolation = cv2.INTER_CUBIC)
        fgmask = fgbg.apply(resized_frame)
        cv2.imshow('Frame',fgmask)
        out.write(fgmask)
        if cv2.waitKey(30) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()
out.release()
cv2.waitKey(5)
cv2.destroyAllWindows()

PS: when I use default directory for saving videos output will be saved.

out = cv2.VideoWriter("out.mp4",fourcc, 20,(320,180),False)
Saha
  • 339
  • 2
  • 16

5 Answers5

5

When you call the function

cv2.VideoWriter("/your/path/filename.mp4",fourcc, 20,(320,180))

I hope it helps :)

marioandluigi8
  • 124
  • 2
  • 1
2

Try

fourcc = cv2.VideoWriter_fourcc(*'MP4V')

instead of

fourcc = cv2.VideoWriter_fourcc(*'XVID')
Berkay
  • 1,029
  • 1
  • 10
  • 28
  • 1
    not worked, the problem is about changing directory. when I use default directory output will be saved. – Saha Dec 07 '19 at 14:36
1

Using createBackgroundSubtractorMOG2(),

import cv2
cap = cv2.VideoCapture(0)
# fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()
fgbg = cv2.createBackgroundSubtractorMOG2()
fourcc = cv2.VideoWriter_fourcc(*'XVID')
name = "C://path//of//your_dir//out.mp4"
out = cv2.VideoWriter(name,fourcc, 20,(320,180),False)

while(1):
    ret, frame = cap.read()
    if (ret == True):
        resized_frame = cv2.resize(frame,(320,180),fx=0,fy=0, interpolation = cv2.INTER_CUBIC)
        fgmask = fgbg.apply(resized_frame)
        cv2.imshow('Frame',fgmask)
        out.write(fgmask)
        if cv2.waitKey(30) & 0xFF == ord('q'):
            break
    else:
        break
cap.release()
out.release()
cv2.waitKey(5)
cv2.destroyAllWindows()

This will save your out.mp4 given location. You can also use single forward slash instead of double forward slash, when specifying location of your file.

Ransaka Ravihara
  • 1,786
  • 1
  • 13
  • 30
0

Try using single quote and using double slash for your file directory.

Birdman
  • 11
0

If you are on windows, use a raw string in the format of: r"C:\bluh bluh directory\abc"

AChang
  • 1
  • 2
  • Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – xlmaster Mar 03 '23 at 13:00