OpenCV在cv.Resize时崩溃
在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,这样就解决了问题。所以我想最后可能只是之前的编译有问题。