当我在OpenCV Python示例中运行人脸检测示例时,当代码进入时,它总是崩溃
rects = cascade.detectMultiScale(img, scaleFactor=1.3, minNeighbors=4, minSize=(30, 30), flags = cv.CV_HAAR_SCALE_IMAGE)
我使用Visual Studio,它还显示了异常代码:c000001d
我在下面附上了问题签名。
Problem signature:
Problem Event Name: APPCRASH
Application Name: python.exe
Application Version: 0.0.0.0
Application Timestamp: 4f84a6c8
Fault Module Name: cv2.pyd
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 509430c8
Exception Code: c000001d
Exception Offset: 004d60dc
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
c000001d
是非法指令。 最常见的原因是二进制文件(如 DLL)损坏,或者在这种情况下是 cv2.pyd
.
有几种方法可能会损坏。 例如,您可能已将其传输或复制为文本文件。 另一个常见问题是在 32 位硬件上运行 64 位代码文件,或者使用 32 位 python 运行 64 位二进制文件,或者上述任何组合。
也可能是您在截然不同的指令集或代码文件格式上运行代码,例如从ARM复制代码并期望它在英特尔上运行,或者从Linux(ELF)运行到Windows(PE COFF)。
我通过将opencv 2.4.3降级到2.4.2来解决这个问题。
我并不是说opencv2.4.3有问题,它可以在另一台PC上运行,但不能在我的PC上运行。
OpenCV 2.4.2 需要tbb_debug.dll但 OpenCV 2.4.3 不需要。我认为这就是 2.4.2 和 2.4.3 之间的区别。也许诀窍在于tbb_debug.dll文件。