1

我在使用 opencv-2.4.2 安装 pyopencv 2.1.0 时遇到了一些错误,我的 python 版本是 2.7.3,我的操作系统是 OS X Mountain Lion,

过程信息如下,我发现一些错误表明'Mat'类被重新定义,但我不知道如何修复它,有没有朋友可以帮助我?感谢!

sudo python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to package/pyopencv.egg-info/requires.txt
writing package/pyopencv.egg-info/PKG-INFO
writing top-level names to package/pyopencv.egg-info/top_level.txt
writing dependency_links to package/pyopencv.egg-info/dependency_links.txt
reading manifest file 'package/pyopencv.egg-info/SOURCES.txt'
writing manifest file 'package/pyopencv.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.8-x86_64/egg
running install_lib
running build_py
creating build/lib.macosx-10.8-x86_64-2.7
creating build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/__init__.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/common.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/config.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cv_h.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cv_hpp.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cvaux.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cvtypes_h.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cvver_h.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cxcore_h.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cxcore_hpp.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cxcore_hpp_point.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cxcore_hpp_vec.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cxerror_h.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/cxtypes_h.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/highgui.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/info.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/interfaces.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/ml.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
copying package/pyopencv/sdopencv.py -> build/lib.macosx-10.8-x86_64-2.7/pyopencv
running build_ext
building 'pyopencv.pyopencv_extras' extension
creating build/temp.macosx-10.8-x86_64-2.7
creating build/temp.macosx-10.8-x86_64-2.7/package
creating build/temp.macosx-10.8-x86_64-2.7/package/extras
creating build/temp.macosx-10.8-x86_64-2.7/package/extras/core
creating build/temp.macosx-10.8-x86_64-2.7/package/extras/sdopencv
/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -pipe -O2 -fwrapv -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -dynamiclib -I/System/Library/Frameworks/Python.framework/Headers -I/opt/local/include -I/opt/local/include/opencv -I/opt/local/include -I~/Downloads/pyopencv-2.1.0.wr1.2.0/package -I~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras -I~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core -I~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c package/extras/core/ndarray.cpp -o build/temp.macosx-10.8-x86_64-2.7/package/extras/core/ndarray.o -O3 -DNDEBUG
clang: warning: argument unused during compilation: '-dynamiclib'
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:58:13: error: 
      redefinition of 'Mat'
inline Mat::Mat()
            ^
/opt/local/include/opencv2/core/mat.hpp:67:13: note: previous definition is here
inline Mat::Mat() : size(&rows)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:59:35: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), ...
                                  ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:58:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat()
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:61:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(int _rows, int _cols, int _type)
            ^
/opt/local/include/opencv2/core/mat.hpp:72:13: note: previous definition is here
inline Mat::Mat(int _rows, int _cols, int _type) : size(&rows)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:62:35: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    : flags(0), rows(0), cols(0), step(0), data(0), refcount(0), ...
                                  ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:61:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(int _rows, int _cols, int _type)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:68:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(int _rows, int _cols, int _type, const Scalar& _s)
            ^
/opt/local/include/opencv2/core/mat.hpp:78:13: note: previous definition is here
inline Mat::Mat(int _rows, int _cols, int _type, const Scalar& _s) : size(&rows)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:69:35: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    : flags(0), rows(0), cols(0), step(0), data(0), refcount(0),
                                  ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:68:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(int _rows, int _cols, int _type, const Scalar& _s)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:79:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(Size _size, int _type)
            ^
/opt/local/include/opencv2/core/mat.hpp:85:13: note: previous definition is here
inline Mat::Mat(Size _sz, int _type) : size(&rows)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:80:35: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    : flags(0), rows(0), cols(0), step(0), data(0), refcount(0),
                                  ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:79:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(Size _size, int _type)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:87:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(Size _size, int _type, const Scalar& _s)
            ^
/opt/local/include/opencv2/core/mat.hpp:91:13: note: previous definition is here
inline Mat::Mat(Size _sz, int _type, const Scalar& _s) : size(&rows)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:88:31: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
: flags(0), rows(0), cols(0), step(0), data(0), refcount(0),
                              ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:87:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(Size _size, int _type, const Scalar& _s)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:98:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(const Mat& m)
            ^
/opt/local/include/opencv2/core/mat.hpp:111:13: note: previous definition is
      here
inline Mat::Mat(const Mat& m)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:99:51: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    : flags(m.flags), rows(m.rows), cols(m.cols), step(m.step), data(m.data),
                                                  ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:98:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(const Mat& m)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:106:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)
            ^
/opt/local/include/opencv2/core/mat.hpp:129:13: note: previous definition is
      here
inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:108:5: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    step(_step), data((uchar*)_data), refcount(0),
    ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:106:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:126:13: error: 
      redefinition of 'Mat'
inline Mat::Mat(Size _size, int _type, void* _data, size_t _step)
            ^
/opt/local/include/opencv2/core/mat.hpp:151:13: note: previous definition is
      here
inline Mat::Mat(Size _sz, int _type, void* _data, size_t _step)
            ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:128:5: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    step(_step), data((uchar*)_data), refcount(0),
    ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:126:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(Size _size, int _type, void* _data, size_t _step)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:146:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(const Mat& m, const Range& rowRange, const Range& colRange)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:149:10: error: 
      'operator=' is a protected member of 'cv::Mat::MStep'
    step = m.step; refcount = m.refcount;
    ~~~~ ^ ~~~~~~
/opt/local/include/opencv2/core/core.hpp:1958:16: note: declared protected here
        MStep& operator = (const MStep&);
               ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:182:5: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    step(m.step), data(m.data + roi.y*step), refcount(m.refcount),
    ^
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:180:13: error: 
      constructor for 'cv::Mat' must explicitly initialize the member 'size'
      which does not have a default constructor
inline Mat::Mat(const Mat& m, const Rect& roi)
            ^
/opt/local/include/opencv2/core/core.hpp:1961:11: note: member is declared here
    MSize size;
          ^
/opt/local/include/opencv2/core/core.hpp:1933:23: note: 'cv::Mat::MSize'
      declared here
    struct CV_EXPORTS MSize
                      ^
In file included from package/extras/core/ndarray.cpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/ndarray.hpp:18:
In file included from ~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/core/opencv_headers.hpp:9:
~/Downloads/pyopencv-2.1.0.wr1.2.0/package/extras/sdopencv/sdcxmat.hpp:197:35: warning: 
      field 'step' will be initialized after field 'data' [-Wreorder]
    rows(m->rows), cols(m->cols), step(m->step), data(m->data.ptr), refcount(0),
                                  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
10 warnings and 20 errors generated.
error: command '/usr/bin/clang' failed with exit status 1
4

1 回答 1

3

根据 pyopencv 的第 47 期,OpenCV 2.3.1 或更高版本似乎与它不兼容。

http://code.google.com/p/pyopencv/issues/detail?id=47

考虑尝试 cv2.so 而不是 pyopencv。

它在我的 Mountain Lion 上运行良好。请务必制作本说明中描述的一些符号链接。

https://github.com/ingenuitas/SimpleCV#installation

玩得开心!

于 2012-11-06T14:10:22.257 回答