首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么仅仅导入OpenCV会导致大量的CPU使用?

为什么仅仅导入OpenCV会导致大量的CPU使用?
EN

Stack Overflow用户
提问于 2016-11-06 04:27:20
回答 2查看 2.9K关注 0票数 12

在尝试Raspberry Pi的运动检测器时,我注意到了一些非常奇怪的事情:

从脚本中删除摄像机日志,使其几乎使用0 CPU:

代码语言:javascript
复制
#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,使该脚本的CPU使用率达到300%!!

OpenCV有什么问题,为什么我不能开始用它来抓取usb摄像头的图像,而不用一堆cpu,消耗掉电池?

EN

回答 2

Stack Overflow用户

发布于 2017-03-18 18:26:16

嗯,如果我没弄错的话,opencv需要点钱,对吧?你能试一下以下几种方法吗?

代码语言:javascript
复制
$ sudo apt-get install libatlas3-base
$ sudo update-alternatives --config libblas.so.3

选择丽巴特拉斯选项

代码语言:javascript
复制
$ sudo update-alternatives --config liblapack.so.3

选择丽巴特拉斯选项

代码语言:javascript
复制
$ sudo aptitude purge libopenblas-{base,dev}

来源

票数 11
EN

Stack Overflow用户

发布于 2017-03-19 01:52:59

我可以确认詹尼斯的答案是正确的。我只是执行了他的答案中列出的步骤,并且能够在python3.4中导入cv2,而不需要占用大量的cpu。所以至少有这样的情况。我能够抓取一个框架并显示一个图像。这适用于我的用例。

不过,我确实注意到,在上述步骤中,libtiff5、wolfram和其他几个库已被卸载。

如果您需要这些库和应用程序(我目前没有完整的列表),我会暂时停止执行。

Sudo apt-获取dist-升级

Sudo rpi-更新

在这个时候,继续呆在拉斯班·杰西。这只是我个人的经验。

编辑:

此外,我还想补充一点,詹尼斯是对的,这似乎是一个很难解决的问题,很容易通过以下简单的方法来检验:

在Raspberry PI3的桌面上运行->Start菜单->Code->Python 3;键入"import numpy“(没有引号)。

你应该看到你的cpu使用率过高。这是一种告诉您有资格进行此修复工作的方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40445983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档