[英]Why does just importing OpenCV cause massive CPU usage?
在為Raspberry Pi嘗試運動檢測器時,我注意到了一些非常奇怪的事情:
從腳本中刪除攝像機記錄,使其幾乎使用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 ,使這個腳本達到300%的CPU使用率!!
OpenCV有什么問題,為什么我不能開始使用它來獲取usb相機圖像而不使用一堆cpu,並且耗盡電池?
嗯,如果我沒弄錯,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}
我可以確認Giannis的回答是正確的。 我剛剛執行了他的答案中列出的步驟,並且能夠在沒有高CPU使用率的情況下在python 3.4中導入cv2。 所以至少有那個。 我能夠抓住一個框架並顯示一個圖像。 這適用於我的用例。
我注意到,在上述步驟中,libtiff5,wolfram和其他幾個庫都被卸載了。
如果您需要這些庫和應用程序(我目前沒有完整列表),我會推薦暫時不執行
Sudo apt-get dist-upgrade
和
Sudo rpi-update
這時,還留在raspbian jessie。 這只是出於個人經驗。
編輯:
另外我想補充一點,Giannis是對的,這似乎是一個numpy問題,並且很容易通過以下方式進行測試:
繼續你的Raspberry Pi3桌面 - >開始菜單 - >代碼 - > Python 3; 鍵入“import numpy”(不帶引號)。
您應該看到您的CPU使用率通過屋頂。 這是一種告訴您有資格使此修復工作的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.