First time here? Check out the FAQ!

Ask Your Question
0

I can't call the video that is stored in my laptop using VideoCapture() method of opencv.

asked Feb 18 '15

updated Feb 18 '15

thdrksdfthmn gravatar image

If I write: cap = cv2.VideoCapture(0), my code works properly. but whenever I write cap = cv2.VideoCapture('C:\Users\Anjali\Documents\Python_Files\Video_tracking\slow.mp4'), it does't work.

Below is my code:

import cv2
import numpy as np


cap = cv2.VideoCapture('C:\Users\Anjali\Documents\Python_Files\Video_tracking\slow.mp4')

while (True):

ret, frame = cap.read()

#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('Frame', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()
cv2.destroyAllWindows()

It gives the following error, please help me in this:

cv2.imshow('Frame', frame)
error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow
Preview: (hide)

Comments

i guess, your capture did not open (it did not like the codec), thus your frame was empty, thus imshow() complains.

please, be wise and add checks:

if not cap.isOpened(): raise Exception("it did not find or did not like your movie")

if frame==None: raise Exception("empty image detected")

berak gravatar imageberak (Feb 18 '15)edit

Yeah, it is not capturing my video. So, what to do with this? My path is correct I have checked it.

AnjaliChanglani gravatar imageAnjaliChanglani (Feb 18 '15)edit

so, then attack the codec problem. mp4 is only the container, there will be some variant of divx xvid or such codec used. e.g. you could go here and try some package, like the LAV one.

berak gravatar imageberak (Feb 18 '15)edit

also make sure, that python can find your opencv_ffmpegxxx.dll

berak gravatar imageberak (Feb 18 '15)edit

hey berak, I saw FOURCC.. and downloaded and installed 3IV1 for my windows and mp4 video. now what? how to use this? please help me.

AnjaliChanglani gravatar imageAnjaliChanglani (Feb 18 '15)edit

Please anyone help me in this...

AnjaliChanglani gravatar imageAnjaliChanglani (Feb 19 '15)edit

Have you tried to display the only if the frame is not empty? Maybe there are some empty frames for some reason

thdrksdfthmn gravatar imagethdrksdfthmn (Feb 19 '15)edit

2 answers

Sort by » oldest newest most voted
1

answered Mar 23 '15

TJ gravatar image

updated Mar 23 '15

instead of

'C:\Users\Anjali\Documents\Python_Files\Video_tracking\slow.mp4'

use

'C:\\Users\\Anjali\\Documents\\Python_Files\\Video_tracking\\slow.mp4'

use double slashes

Preview: (hide)
0

answered Feb 19 '15

That happened to me in a previous Python version with some videos, my partial solution was reading video with

i=1 
while(i< NUMBER_FRAMES)
     ret, frame = cap.read()
     i=i+1

if you realize, this code read frames to discard them. According the size of your video, NUMBER_FRAMES could vary between 10 and 400, you can set your own number. Hope this hint works for you.

Preview: (hide)

Question Tools

1 follower

Stats

Asked: Feb 18 '15

Seen: 394 times

Last updated: Mar 23 '15