cv加载可执行文件

时间:2014-07-15 07:32:09

标签: python python-2.7 opencv

我在我的代码中导入了cv2库,并通过GUI2EXE软件使用py2exe创建了一个可执行文件。

Py2exe创建了cv2.pyc文件,该文件在每次启动应用程序时运行,并创建错误“导入错误:DLL加载失败。无法找到指定的模块' at line mod = imp.load_dynamic( name ,path)。它还使其他文件如numpy.core_sort在运行时产生相同的错误。

我的问题是py2exe只在运行应用程序时运行cv2.pyc文件。它为什么这样做?它应该刚刚导入了cv2库。 cv2.pyc文件中的代码如下所示

def __load():
    import imp, os, sys
    try:
        dirname = os.path.dirname(__loader__.archive)
    except NameError:
        dirname = sys.prefix
    path = os.path.join(dirname, 'cv2.pyd')
    #print "py2exe extension module", __name__, "->", path
    mod = imp.load_dynamic(__name__, path)
##    mod.frozen = 1
__load()
del __load

我的代码以这种方式调用库: -

import wx
import wx.lib.buttons
import numpy as np
import os 
import cv2.cv as cv #Import functions from OpenCV
from numpy import *
from PIL import Image #python imaging library

1 个答案:

答案 0 :(得分:0)

看着cv2.cpp它有#include "numpy/ndarrayobject.h" 所以看起来它加载numpy,这并不奇怪。 由于py2exe没有看到c ++源代码,因此它不会检测到这一点。所以我认为"指定的模块"无法找到的是numpy。

在setup.py中添加以下行可以解决您的问题:

import numpy