Я написал скрипт Python на своем Raspberry Pi, и он отлично работает при работе с Thonny IDE. Но когда я хочу запустить его из терминала, у него много ошибок импорта. Я уже добавил комментарий к среде в начале скрипта. Это мой следующий код:
#!/usr/bin/env python
import cv2
import time
import os
import numpy
import imutils
from threading import Thread
import threading
class WebcamVideoStream:
def __init__(self, src ='/dev/video0', cap = cv2.CAP_V4L2):
self.stream = cv2.VideoCapture(src,cap)
self.stream.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M','J','P','G'))
self.stream.set(cv2.CAP_PROP_FPS,30.0)
self.stream.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
self.stream.set(cv2.CAP_PROP_FRAME_HEIGHT,720)
(self.grabbed, self.frame) = self.stream.read()
self.stopped = False
def start(self):
Thread(target = self.update, args=()).start()
return self
def update(self):
while(True):
if self.stopped:
return
(self.grabbed, self.frame) = self.stream.read()
def read(self):
return self.frame
def stop(self):
self.stopped = True
if __name__ == "__main__":
vs = WebcamVideoStream()
vs.start()
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
timeStart = False
timeStartReal = time.time()
faceRecNeeded = True
count = 0
countFrames = 0
face_cascade = cv2.CascadeClassifier('/home/pi/Downloads/haarcascade_frontalface_default.xml')
while True:
frame = vs.read()
if faceRecNeeded:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Detect the faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Draw the rectangle around each face
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
count += 1
if count>0 and timeStart == False:
faceRecNeeded = False
timeStart = True
timeStartReal = time.time()
out = cv2.VideoWriter('output' + str(time.time()) + '.avi', fourcc, 15.0, (1280, 720))
count = 0
if timeStart == True and time.time()-timeStartReal < 5:
out.write(frame)
countFrames+=1
if timeStart == True and time.time()-timeStartReal >= 5:
timeStart = False
faceRecNeeded = True
out.release()
print(countFrames)
# Display
#cv2.imshow('img', frame)
# Stop if escape key is pressed
if cv2.waitKey(1) & 0xFF == ord('q'):
if timeStart == True:
out.release()
break
cv2.destroyAllWindows()
vs.stop()
Это мой вывод моего терминала после запуска cmd = python3 /home/pi/Desktop/DATANAME.py
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/numpy/__init__.py", line 140, in <module>
from . import core
File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 101, in <module>
from . import _internal
File "/usr/lib/python3/dist-packages/numpy/core/_internal.py", line 10, in <module>
import platform
File "/usr/lib/python3.9/platform.py", line 119, in <module>
import subprocess
File "/usr/lib/python3.9/subprocess.py", line 51, in <module>
import threading
File "/home/pi/Desktop/threading.py", line 3, in <module>
from imutils.video import FPS
File "/usr/local/lib/python3.9/dist-packages/imutils/video/__init__.py", line 4, in <module>
from .videostream import VideoStream
File "/usr/local/lib/python3.9/dist-packages/imutils/video/videostream.py", line 2, in <module>
from .webcamvideostream import WebcamVideoStream
File "/usr/local/lib/python3.9/dist-packages/imutils/video/webcamvideostream.py", line 2, in <module>
from threading import Thread
ImportError: cannot import name 'Thread' from partially initialized module 'threading' (most likely due to a circular import) (/home/pi/Desktop/threading.py)
Traceback (most recent call last):
File "/home/pi/Desktop/faceDetectionThreading.py", line 2, in <module>
import cv2
ImportError: numpy.core.multiarray failed to import
Можете ли вы помочь мне исправить эту ошибку, чтобы я мог работать и через терминал?
Я переустановил numpy, и он все еще не работает. У меня сейчас установлена версия 1.22.3






Я предполагаю, что ваш файл «threading.py», который находится в каталоге рабочего стола. Это, скорее всего, вызывает циклическую ошибку импорта, поскольку подпроцесс ошибочно импортирует ваш собственный модуль вместо встроенного модуля потоковой передачи Python.
Ваша проблема должна быть решена, когда вы переименуете файл threading.py, чтобы он не мешал другим модулям.
Какую версию Numpy вы используете? Это ответ на ваш вопрос: stackoverflow.com/questions/20518632/…