Почему только импорт OpenCV приводит к массовому использованию ЦП?

Я заметил что-то очень странное в попытке обнаружить детектор движения для Малины Пи:

Извлечение записи камеры из script позволяет использовать почти 0 CPU:

#from gpiozero import MotionSensor
#import cv2
from datetime import datetime
from time import sleep
#camera = cv2.VideoCapture(0)
#pir = MotionSensor(4, queue_len=2, sample_rate=2, threshold=0.5)
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
PIR_PIN = 4
GPIO.setup(PIR_PIN, GPIO.IN)
while True:
    sleep(1)
    if GPIO.input(PIR_PIN):
        print( "detected!")
        filename = 'motionpics/' + datetime.now().strftime("%Y-%m-%d_%H.%M.%S.jpg")
        #ret, frame = camera.read()
        #cv2.imwrite(filename, frame)
        #camera.release()
        #pir.wait_for_no_motion()

Однако, раскомментируя только одну строку - импорт cv2, этот script переходит на 300% использования ЦП!!

Что не так с OpenCV и почему я не могу начать использовать его для захвата изображений с камеры USB без него, используя кучу процессора и ношение батареи?

Ответ 1

Хмммм, если я не ошибаюсь, opencv нуждается в numpy правильно? Не могли бы вы попробовать следующее:

$ sudo apt-get install libatlas3-base
$ sudo update-alternatives --config libblas.so.3

выберите опцию libatlas

$ sudo update-alternatives --config liblapack.so.3

выберите опцию libatlas

$ sudo aptitude purge libopenblas-{base,dev}

Источник

Ответ 2

Я могу подтвердить, что ответ Джанниса верен. Я только что выполнил шаги, перечисленные в его ответе, и могу импортировать cv2 в python 3.4 без использования большого процессора. Так что, по крайней мере, это так. Я могу захватить рамку и отобразить изображение. Это работает для моего использования.

Однако я заметил, что во время вышеупомянутых шагов libtiff5, wolfram и несколько других библиотек были удалены.

Если вам нужны эти библиотеки и приложения (у меня нет полного списка на данный момент), я бы рекомендовал временно НЕ выполнять

Sudo apt-get dist-upgrade

и

Sudo rpi-update

В это время, и оставайся у распбей-джесси. Это просто из моего личного опыта.

EDIT:

Также я хотел бы добавить, что Giannis был прав, это, по-видимому, многоплодная проблема, и его можно легко протестировать просто:

на вашем рабочем столе Raspberry Pi3 → Меню Пуск → Код → Python 3; введите "import numpy" (без кавычек).

Вы должны увидеть, как ваше использование процессора проходит через крышу. Это способ сказать, что вы имеете право на это исправление.