Так что я понятия не имею, почему это происходит. Я установил все зависимости через cmd, используя python -m pi install -U (dependencies)
, и в настройках интерпретатора PyCharm я также установил их и ясно вижу, что они добавлены в интерпретатор проекта. Но всякий раз, когда я пытаюсь импортировать их в свой код, я получаю «ошибку неиспользованного оператора импорта» с выделением кода серым цветом.
Файлы определенно есть. Я попытался переустановить их во второй раз, и CMD подтверждает, что они уже установлены.
Я использую последнюю версию PyCharm (не бета) JetBrains PyCharm Community Edition 2018.2.4 x64. И Python 3.7. Мой установочный каталог - C: \ Python 3.7 \, а в каталоге site-packages я четко вижу там файлы.
Простая программа обнаружения движения (без встроенных в код импортированных зависимостей):
from __future__ import division
import cv2
from matplotlib import pyplot as plt
import numpy as np
from math import cos, sin
first_frame = None
video = cv2.VideoCapture(0)
a = 1
while True:
a = a + 1
check, frame = video.read()
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (21, 21), 0)
if first_frame is None:
first_frame = gray
continue
delta_frame = cv2.absdiff(first_frame, gray)
thresh_delta = cv2.threshold(delta_frame, 40, 255, cv2.THRESH_BINARY)[1]
erode = cv2.erode(thresh_delta, None, iterations=1)
dilate = cv2.dilate(erode, None, iterations=1)
(_, cnts, _) = cv2.findContours(dilate.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in cnts:
if cv2.contourArea(contour) < 200:
continue
(x, y, w, h) = cv2.boundingRect(contour)
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('captureFrame', frame)
cv2.imshow('captureGrey', gray)
cv2.imshow('delta', delta_frame)
cv2.imshow('thresh', thresh_delta)
cv2.imshow('dilate', dilate)
key = cv2.waitKey(1)
if key == ord('q'):
break
print(a)
video.release()
cv2.destroyAllWindows()