gpt4 book ai didi

python - 执行图像减法时退出代码139

转载 作者:太空狗 更新时间:2023-10-29 20:28:26 28 4
gpt4 key购买 nike

我正在使用 python 执行图像减法。我有 numpy 数组形式的图像。包含所有图像的列表的大小为1000。列表中的每个numpy数组都是360*640类型的。当帧数在 300 左右时,帧减法是正确的。

def find_der(frames):
der = []
for a in range(len(frames)-1):
der.append(frames[a + 1] - frames[a])
return der

framesprocessing = 1000
for j in range(framesprocessing):

img = cv.QueryFrame(video)
if img is None:
print("Images are Not Captured")
else:
tmp = cv.CreateImage(cv.GetSize(img), 8, 3)

saveImagesColor = 'Abhiram_images/RGB/frame' + str(i) + '.png' #Saving the iplimages to the local PC
cv.SaveImage(saveImagesColor, img)

saveImagesGray = 'Abhiram_images/GRAY/frame' + str(i) + '.png' #Saving the grayscale images to the local PC
img1 = cv2.imread(saveImagesColor)
grayimg = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
cv2.imwrite(saveImagesGray, grayimg)
graynumpyimage = np.array(grayimg, dtype='int64')
grayscale.append(graynumpyimage)
i += 1

first_der = find_der(grayscale)

当我执行帧处理为 1000 的代码时,我得到以下输出:

Process finished with exit code 139

你能帮我解决这个错误吗?当我遇到这种错误时,你能帮我解释一下吗

最佳答案

您可能内存不足:您有 1000 张图像 x 360 像素 x 640 像素 x 3 波段 x 8 位 = 大约 691 MB...

列出代码 139 here作为“尝试访问不在您的地址空间中的虚拟地址”,这将支持内存分配错误,如果您在 RAM 量低的 32 位系统上,并且其他内容已经在内存中,则很容易发生这种情况.

您可以重构您的代码,这样就不需要在内存中保存图像列表,例如,只在内存中保存最后一张图像,然后执行减法并用当前图像覆盖它。

您可以通过将您的函数替换为:

a = []
for i in range(1000):
a.append(numpy.ones((360,640,3), dtype=numpy.int))

并查看它是否在内存不足的情况下运行。

关于python - 执行图像减法时退出代码139,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704040/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com