Full Code:
# import the necessary packages
from __future__ import print_function
import cv2
# load the image and convert it to grayscale
image = cv2.imread("jurassic_world.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("preview", image)
# initialize the AKAZE descriptor, then detect keypoints and extract
# local invariant descriptors from the image
detector = cv2.AKAZE_create()
(kps, descs) = detector.detectAndCompute(gray, None)
print("keypoints: {}, descriptors: {}".format(len(kps), descs.shape))
# draw the keypoints and show the output image
cv2.drawKeypoints(image, kps, image, (0, 255, 0))
cv2.imshow("Output", image)
cv2.waitKey(0)
Error:
Traceback (most recent call last):
File "test_akaze.py", line 8, in <module>
cv2.imshow("preview", image)
AttributeError: 'module' object has no attribute 'imshow'
So I've tried to research an answer. There is a similar question on this site but I tried to do what they said and it didn't help: Here is what I did
- Ran as sudo
- added cv2.waitKey(0) after both imshow
- changed it to cv2.waitKey(0) & 0xFF (I have no idea what this is all about but I read somewhere that you have to do that for 64bit machines which mine is)
- I have commented out the imshow, everything else works. I get the desired result. But imshow seems like it's not installed or something :/
I am sorry I am such an idiot. And I am stabbing at the dark. I appreciate any help.
pkg-config --cflags --libsand post results here.pkg-config opencv --cflags --libs. Did you build OpenCV from source or install from repository?libopencv_highgui.sofile. You did not build opencv with gui support.