簡體   English   中英

為什么只導入OpenCV導致大量CPU使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM