“Segmentation fault” during “import cv” on Mac OS

送分小仙女□ 提交于 2019-12-12 08:07:06

问题


Trying to compile opencv on my Mac from source.

I have following CMakeCache.txt: http://pastebin.com/KqPHjBx0

I make ccmake .., press c, then g. Than I make sudo make -j8: http://pastebin.com/cJyr1cEd

Than I make sudo make install: http://pastebin.com/W77syYBj

And than I make import cv in python and get "Segmentation faul" with this stacktrace: http://pastebin.com/gegYAK1u

I don't know what could be useful to help me, pls. ask, I'll get it.


回答1:


I had a same situation and resolved the following steps.

In ccmake(ccmake -G "Unix Makefiles" .), toggle to the advanced mode pressing t.

change PYTHON_LIBRARY value to /opt/local/lib/libpython2.6.dylib and PYTHON_INCLUDE_DIR to /opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6.

Note that the specific path depends, of course, what version of Python you are using (2.6 or 2.7 etc.). Also, if you are using the system Python, instead of MacPorts (which is in /opt), then you probably want PYTHON_LIBRARY to be /usr/lib/libpython2.6.dylib




回答2:


From your logs, you seem to use MacPorts and python 2.6.

opencv will compile fine on this framework:

sudo port install  opencv +python26

be sure to have py26-numpy installed to have support for basic functions such as cv.fromarray :

sudo port install py26-numpy

means that your problem has been solved by the MacPorts community. is it a problem of the latest source? the version you compile is the one (opencv 2.2.0) used by macports.

Your question is about compiling from source. Looking at the portfile linked to that you'll be able to locate your problem. to find the Portfile, do:

port file opencv

or directly

sudo port edit  opencv

this will list all configuration flags necessary for a working openCV.




回答3:


Typing:

sudo port select --set python python27

fixed the segfault for me.




回答4:


The problem is simple, macports did rewrote cv.so in ~/usr/lib

if you installed OPENCV using

sudo port install  opencv +python26

type

sudo port select --set python python26

if you installed OPENCV using

sudo port install  opencv +python27

type

sudo port select --set python python27

The "bug" is that python2.7 interpreter is trying to open python2.6 pre-compiled binary that gives seg fault 11 (or vice versa)

The nevereinding problem with opencv is that it does not have source code, just binaries that are stongly dependent on which compiler there were built on (which platform etc.)



来源:https://stackoverflow.com/questions/5242257/segmentation-fault-during-import-cv-on-mac-os

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!