OpenCV在cv.Resize时崩溃

2 投票
3 回答
2341 浏览
提问于 2025-04-16 09:23

在Windows 7上运行OpenCV时,如果使用标准的Python命令行,我遇到了以下情况。

import cv
im    = cv.LoadImageM("data/somefile.jpg")
thumb = cv.CreateMat(im.rows/6, im.cols/6, im.type) 

print "Before"
cv.Resize(im, thumb)
print "After"

结果是:

>>> Before
========================= RESTART ==========================

没有出现错误,那我应该注意什么呢?是什么导致OpenCV/Python崩溃的呢?

3 个回答

0

我觉得你的程序并没有崩溃,它只是按照你给它的指令在运行。看看下面的代码,我用的是OpenCV 2.2和Python 2.7.2。试试使用WaitKey()来防止崩溃!

import cv
cv.NamedWindow("win",cv.CV_WINDOW_AUTOSIZE)
im= cv.LoadImageM("image.jpg")
thumb= cv.CreateMat(im.rows/3, im.cols/3, im.type) 
cv.Resize(im, thumb)
cv.ShowImage("win",thumb)
cv.WaitKey(10000)
2

在OpenCV中,大部分内存分配都是不检查的,这可能会导致程序崩溃。OpenCV还试图通过C语言代码抛出异常,这样做可能会导致一些不可预知的情况发生(通常是崩溃),这取决于它是如何编译的。

检查一下im.rows/6等值是否符合你的预期,同时确保图像的大小在Python的内存限制范围内。

1

我需要用Visual Studio (Express) 2010重新编译OpenCV,而不是用MinGW,这样就解决了问题。所以我想最后可能只是之前的编译有问题。

撰写回答