I installed OpenCV3.2 + python3.6.1 from this installation guide. (For the paths needed in guide I typed:
Edit: I'm not sure, but I guess that I should install opencv under 3.6, not 3.6.1, please don't use my paths for your installation!
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/config-3.6m-darwin/libpython3.6.dylib
and
ls -d /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m/)
My testing code is completely the same as the tutorial of OpenCV 3.2 documentation, but the output screen show nothing but a title:
import numpy as np
import cv2
img = cv2.imread('1.jpg',0)
cv2.imshow('image', img)
cv2.waitKey(0)
The result:
As the picture shown the content of the image is missing.
and it seems that it has something to do with my python, the icon is broken:
Please help me! I just want to use opencv for my school project...
解决方案
I ran into a similar issue but on the C++ API perspective. Credits go out to mattmyne.
Window autosize was not working for macOS using cocoa. The window's image dimensions could not be found. This has been fixed by removing IP64 specific synthesize in window_cocoa.mm that was causing null reference for the window's contentView image property in cvShowImage (image reference was not linked to _image).
In a nutshell, OpenCV tried to support both 32 and 64-bit ObjC compilers but since Apple no longer supports 32-bit, some image synthesizing operations resulted in null references in 64-bit machines. More info
To resolve this, locate the file window_cocoa.mm; if built from source it'll be in opencv/modules/highgui/src.
Change this
@implementation CVView
#if defined(__LP64__)
@synthesize image;
#else // 32-bit Obj-C does not have automatic synthesize
@synthesize image = _image;
#endif
To this
@implementation CVView
@synthesize image = _image;
Do the same thing for the CVWindow and CVSlider implementations to accommodate videos as well.
Recompile OpenCV and test out your code.