【发布时间】:2014-05-16 20:28:37
【问题描述】:
我正在使用 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
您能否帮助我如何克服此错误并在我遇到此类错误时提出一些建议
【问题讨论】:
-
代码 139 表示SIGSEGV, i.e. invalid memory access。
-
在这段代码中,我只是减去和存储图像。我没有进行任何无效的内存访问。我是这个 python 编码的新手。你能帮我克服这个错误吗
-
不幸的是,没有简单的方法可以解决这个问题,首先尝试将 Python 和 OpenCV 更新到最新版本,如果这没有帮助,您需要使用 gdb 等调试器。
-
感谢您的回复。我已经从 python2.7 升级到了 python3。但是我找不到将 Opencv 配置为 python3 的过程,因为我的 ubuntu 操作系统中已经有 python2.7。你能建议我做一个程序吗
-
OpenCV 与 Python 3 不兼容。