繁体   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