2016-11-20 54 views
0

私は、複数のユーザー生成ビデオを使用してビデオ合成プロジェクトに取り組んでいます。私は問題を理解することはできませんよOpenCVメモリ不足エラー

OpenCV Error: Unspecified error (The numpy array of typenum=2, ndims=3 can not be created) in NumpyAllocator::allocate, file ..\..\..\modules\python\src2\cv2.cpp, line 184 
OpenCV Error: Insufficient memory (Failed to allocate 6220800 bytes) in cv::OutOfMemoryError, file ..\..\..\modules\core\src\alloc.cpp, line 52 
Traceback (most recent call last): 
File "C:/Users/chaitanya/PycharmProjects/Thesis/ROI.py", line 86, in <module> 
    ret,frame=cap.read() 
cv2.error: ..\..\..\modules\core\src\alloc.cpp:52: error: (-4) Failed to allocate 6220800 bytes in function cv::OutOfMemoryError 

:以下は私のコード

df=pd.concat(user,axis=1) 
#print df 

dfs= df.loc[:, (slice(None), ['Panning','sec'])] 


video_index=0 
cap=cv2.VideoCapture(videoList[0]) 

fra=[] 
fourcc = cv2.VideoWriter_fourcc(*'DIVX') 
out = cv2.VideoWriter("Output.avi", fourcc, fps, (width, height), True) 
while(cap.isOpened()): 
    ret,frame=cap.read() 
    fra.append(frame) 

    for index,row in dfs.iterrows(): 
      if (row[:, 'Panning'] == 'Panning').any(): 
       idx = row[:, 'Panning'][row[:, 'Panning'] == 'Panning'].index.tolist() 
       sec = int(row.loc[(idx, 'sec')].values.tolist()[0]) 
       if cap.get(0)==1000*sec: 
        cap = cv2.VideoCapture(videoList[indices.index(random.choice(idx))]) 
        cap.set(0, sec * 1000) 
        ret, frame = cap.read() 
        fra.append(frame) 
      else: 

       ret,frame=cap.read() 
       fra.append(frame) 
       if frame is None: 
        video_index += 1 
        if video_index == len(videoList): 
         break 
        cap = cv2.VideoCapture(videoList[indices.index(long_dur())]) 

        cap.set(0,1000*sec) 
        ret, frame = cap.read() 
        fra.append(frame) 

私は、次のエラーを取得しています実行しようとしていますです。このエラーで助けが必要です

+0

私の回答は役に立ちましたか? –

答えて

1

あなたはフレーズアレイにフレームを連続して追加しています。遅かれ早かれ、このようにRAMを完成させようとしています。それが起こりました。