मैं रास्पबेरी Pi के लिए एक प्रस्ताव डिटेक्टर की कोशिश में बहुत अजीब कुछ देखा:ओपनसीवी का आयात क्यों बड़े पैमाने पर CPU उपयोग का कारण बनता है?
स्क्रिप्ट से कैमरा लॉगिंग निकाला जा रहा है, यह लगभग 0 सीपीयू का उपयोग करता है:
#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()
हालांकि, सिर्फ एक लाइन uncommenting - आयात cv2, यह स्क्रिप्ट 300% CPU उपयोग पर जाता है !!
ओपनसीवी के साथ क्या गलत है और मैं इसे सीपीयू के समूह का उपयोग करके और बैटरी पहनने के बिना यूएसबी कैमरा छवियों को पकड़ने के लिए क्यों उपयोग नहीं कर सकता?
मैं अपने रास्पबेरी पीआई 3 पर एक ही समस्या को देख रहा हूं। मैंने Pyimagesearch ब्लॉग पर सूचीबद्ध सटीक विवरण का उपयोग करके OpenCV3.2-dev इंस्टॉल करने का प्रयास किया है, लेकिन केवल लाइब्रेरी आयात करने से मुझे 75% CPU पर रखा जाता है। मेरे यूएसबी कैमरा परिणामों से एक फ्रेम को पकड़ने की कोशिश कर रहे कार्यक्रम में दोबारा नहीं आ रहा है। नवीनतम रास्पियन (पिक्सेल) और पायथन 3.4 का उपयोग करना। –
क्या आप अपने आवेदन को 'gdb' ('gdb -p pid_of_it') से जोड़ सकते हैं और सभी थ्रेड स्टेटस (' जानकारी थ्रेड', 'थ्रेड 1', 'बैकट्रैक',' थ्रेड 2', 'बैकट्रैक' और इसी तरह की जांच कर सकते हैं)।मुझे लगता है कि यह किसी प्रकार के समांतर धागे से हो सकता है, काम करने के लिए तैयार है और कार्यक्षेत्र पर मतदान (जैसे ओपनएमपी या टीबीबी के सक्रिय मोड)। कृपया, 'env' कमांड का परिणाम भी पोस्ट करें (यहां ओएमपी या सीवी या टीबीबी संबंधित चर हो सकते हैं)। (टायलर द्वारा क्रॉस पोस्ट: http://raspberrypi.stackexchange.com/questions/63021)। ओपनसीवी (और रूट छवि) का आपका संस्करण क्या है, सीवी लिब कैसे संकलित किया गया था और 'ldd .../libopencv.so' क्या है? – osgx