Почему только импорт 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" (без кавычек).
Вы должны увидеть, как ваше использование процессора проходит через крышу. Это способ сказать, что вы имеете право на это исправление.