Поэтому, чтобы изолировать проблему, я написал пару тестовых сценариев. чтобы увидеть, в чем проблема. Этот скрипт работает нормально.
main.py
Код: Выделить всё
from tflite_support.task import core
from tflite_support.task import processor
from tflite_support.task import vision
from multiprocessing import Process
def start_ml():
model = "efficientdet_lite0.tflite"
numThreads = 4
dispW = int(1280 / 2)
dispH = int(720 / 2)
picam2 = Picamera2()
picam2.preview_configuration.main.size=(dispW, dispH)
picam2.preview_configuration.main.format='RGB888'
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()
baseOptions = core.BaseOptions(file_name=model, use_coral=False, num_threads=numThreads)
detectionOptions = processor.DetectionOptions(max_results=3, score_threshold=0.5)
options = vision.ObjectDetectorOptions(base_options=baseOptions, detection_options=detectionOptions)
detector = vision.ObjectDetector.create_from_options(options)
while True:
im = picam2.capture_array()
im = cv2.flip(im, -1)
imRGB = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) # convert from BGR to RGB image
imTensor = vision.TensorImage.create_from_array(imRGB) # create a tensor image
myDetections = detector.detect(imTensor) # get the objects that are detected by tensorflow
image = utils.visualize(im, myDetections) # create a decorated image with detected objects
cv2.imshow('Camera', im)
if cv2.waitKey(1)==ord('q'):
break
cv2.destroyAllWindows()
process = Process(target=start_ml)
process.start()
main.py
Код: Выделить всё
from detector import Detector
detector = Detector()
detector.start_camera_feed(detector)
Код: Выделить всё
from tflite_support.task import core
from tflite_support.task import processor
from tflite_support.task import vision
from multiprocessing import Process
class Detector:
def __init__(self):
dispW = int(1280 / 2)
dispH = int(720 / 2)
self._picam2 = Picamera2()
self._picam2.preview_configuration.main.size = (dispW, dispH)
self._picam2.preview_configuration.main.format = 'RGB888'
self._picam2.preview_configuration.align()
self._picam2.configure("preview")
self._picam2.start()
model = "efficientdet_lite0.tflite"
numThreads = 4
baseOptions = core.BaseOptions(file_name=model, use_coral=False, num_threads=numThreads)
detectionOptions = processor.DetectionOptions(max_results=3, score_threshold=0.5)
options = vision.ObjectDetectorOptions(base_options=baseOptions, detection_options=detectionOptions)
self._detector = vision.ObjectDetector.create_from_options(options)
def start_camera_feed(self):
process = Process(target=self._show_camera_feed)
process.start()
def _show_camera_feed(self):
iterator = 0
while True:
im = self._picam2.capture_array()
im = cv2.flip(im, -1)
imRGB = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) # convert from BGR to RGB image
imTensor = vision.TensorImage.create_from_array(imRGB) # create a tensor image
myDetections = self._detector.detect(imTensor) # get the objects that are detected by tensorflow
image = utils.visualize(im, myDetections) # create a decorated image with detected objects
cv2.imshow('Camera', im)
if cv2.waitKey(1) == ord('q'):
break
iterator += 1
if iterator == 100:
break
cv2.destroyAllWindows()
Подробнее здесь: https://stackoverflow.com/questions/791 ... spberry-pi
Мобильная версия