OPENCV_ENABLE_NONFREE CMake опция и пересобрать библиотеку в функции 'create' - PullRequest
0 голосов
/ 10 февраля 2020

Я действительно начинаю для python. Я скачиваю проект из inte rnet. Но когда я пытаюсь бежать, я получаю эти ошибки. Я думаю, что мой модуль установки не поддерживается для проекта. Как решить эту проблему?

Ошибка

Traceback (последний вызов был последним): файл «compare.py», строка 20, в sift = cv2 .xfeatures2d.SIFT_create () cv2.error: OpenCV (4.2.0) /Users/travis/build/skvark/opencv-python/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1210: ошибка: (-213 : Функция / функция не реализована) Этот алгоритм запатентован и исключен из данной конфигурации; Установите параметр OPENCV_ENABLE_NONFREE CMake и перестройте библиотеку в функции 'create'

Полный код

import cv2
import numpy as np

original = cv2.imread("images/original_golden_bridge.jpg")
image_to_compare = cv2.imread("images/george-washington-bridge.jpg")

# 1) Check if 2 images are equals
if original.shape == image_to_compare.shape:
    print("The images have same size and channels")
    difference = cv2.subtract(original, image_to_compare)
    b, g, r = cv2.split(difference)

    if cv2.countNonZero(b) == 0 and cv2.countNonZero(g) == 0 and cv2.countNonZero(r) == 0:
        print("The images are completely Equal")
    else:
        print("The images are NOT equal")

# 2) Check for similarities between the 2 images

sift = cv2.xfeatures2d.SIFT_create()
kp_1, desc_1 = sift.detectAndCompute(original, None)
kp_2, desc_2 = sift.detectAndCompute(image_to_compare, None)

index_params = dict(algorithm=0, trees=5)
search_params = dict()
flann = cv2.FlannBasedMatcher(index_params, search_params)

matches = flann.knnMatch(desc_1, desc_2, k=2)

good_points = []
ratio = 0.6
for m, n in matches:
    if m.distance < ratio*n.distance:
        good_points.append(m)
print(len(good_points))
result = cv2.drawMatches(original, kp_1, image_to_compare, kp_2, good_points, None)

cv2.imshow("result", result)
cv2.imshow("Original", original)
cv2.imshow("Duplicate", image_to_compare)
cv2.waitKey(0)
cv2.destroyAllWindows()

python версии

python - версия Python 3.8.1

python2 - версия Python 2.7.16

версии модуля

pip3 freeze
certifi==2019.11.28
numpy==1.18.1
opencv-contrib-python==4.2.0.32
opencv-python==4.2.0.32

Я следовал этому учебнику

А также я следовал этому ответу { ссылка }

Traceback (последний вызов был последним): файл "compare.py", строка 1, в импорте cv2 ModuleNotFoundError: нет модуля с именем 'cv2'

Я деинсталлирую модули pip3 opencv и установил эти два.

pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16
...