在Windows 10上,python 2.7.11,最近使用cmake构建的opencv 3
这是一个尝试从图片而不是视频创建背景模型的简单示例。这仅在使用文件中的图片时发生,而不是在使用视频文件中的cv2.videocapture读取帧时。它在循环中的第一个位置失败。一旦它们是numpy数组,它有什么关系?
看着记忆,它确实会上升,但肯定不会大幅增加。
我尝试过较小的照片(形状〜(1920,2560,3),3张照片后出现错误。
import cv2
import glob
import os
import cv2.bgsegm
#File formats
ext="C:/Users/Ben/Desktop/pics2/*.jpg"
#Create mog
b=cv2.createBackgroundSubtractorMOG2()
#Find photos
jpgs=[]
jpgs.extend(glob.glob(ext))
#Read in photos and add to background
for x in jpgs:
current_image=cv2.imread(x)
print("Photo size is %s" % str(current_image.shape))
b.apply(current_image)
返回:
Photo size is (2992, 5152, 3)
OpenCV Error: Insufficient memory (Failed to allocate 1541478400 bytes) in OutOfMemoryError, file C:\opencv\source\opencv\modules\core\src\alloc.cpp, line 52
OpenCV Error: Assertion failed (u != 0) in create, file C:\opencv\source\opencv\modules\core\src\matrix.cpp, line 432
它可能与此有关,但不明显有一个python解决方案。 https://github.com/Itseez/opencv/issues/4871