Создание приложения безопасности, которое будет с помощью модели классификации определять, кто находится у моей двери (на данный момент члены моей семьи), и показывать это в приложении, которое я создаю в React-native. Я разобрался с большей частью кода, но проблема, с которой я сейчас столкнулся, заключается в том, что когда django отправляет канал (изображение за изображением, я предполагаю), мобильные приложения не отображают канал (используя expo go), а веб-приложение показывает.
Views.py:
Я пробовал использовать модуль «Видео» в Expo-Video, но думаю, что он предназначен для уже созданных видеороликов, а не для прямой потоковой передачи видео. На данный момент я использую локальный сервер, и запросы выполняются устройствами в одной сети. Я видел, как оба мобильных устройства отправляют успешные вызовы API (вызовы запускают камеру), но на моем мобильном устройстве ничего не отображается, кроме навигационного меню в дно. В остальном приложение работает нормально, но только эта страница вызывает у меня головную боль.
Создание приложения безопасности, которое будет с помощью модели классификации определять, кто находится у моей двери (на данный момент члены моей семьи), и показывать это в приложении, которое я создаю в React-native. Я разобрался с большей частью кода, но проблема, с которой я сейчас столкнулся, заключается в том, что когда django отправляет канал (изображение за изображением, я предполагаю), мобильные приложения не отображают канал (используя expo go), а веб-приложение показывает. Views.py: [code]from django.shortcuts import render from django.views.decorators import gzip from django.http import StreamingHttpResponse import cv2 import threading import numpy as np from tensorflow.keras.models import load_model
# Load the face recognition model model = load_model('./final_face_recognition_model.keras')
# Define class labels class_labels = ["person1", "person2", "person3"]
# Load OpenCV's pre-trained Haar Cascade for face detection face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# Define a function to preprocess frames for the model def preprocess_frame(frame, x, y, w, h): """ Extract the face region, resize, normalize, and reshape it for the model. """ face = frame[y:y+h, x:x+w] input_size = (160, 160) # Model's input size resized_face = cv2.resize(face, input_size) normalized_face = resized_face / 255.0 # Normalize pixel values reshaped_face = np.expand_dims(normalized_face, axis=0) # Add batch dimension return reshaped_face
def get_frame(self): image = self.frame if image is not None: # Convert the frame to grayscale for face detection gray_frame = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
for (x, y, w, h) in faces: # Draw a rectangle around the detected face cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
# Preprocess the face region for classification preprocessed_face = preprocess_frame(image, x, y, w, h) predictions = model.predict(preprocessed_face) # Predict the face
# Get the predicted class and confidence predicted_class = np.argmax(predictions, axis=1)[0] confidence = predictions[0][predicted_class] class_label = class_labels[predicted_class]
# Annotate the rectangle with the predicted label and confidence cv2.putText(image, f"{class_label} ({confidence:.2f})", (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 255, 255), 2)
# Encode the frame for streaming _, jpeg = cv2.imencode('.jpg', image) return jpeg.tobytes()
def update(self): while True: (self.grabbed, self.frame) = self.video.read()
[/code] Я пробовал использовать модуль «Видео» в Expo-Video, но думаю, что он предназначен для уже созданных видеороликов, а не для прямой потоковой передачи видео. На данный момент я использую локальный сервер, и запросы выполняются устройствами в одной сети. Я видел, как оба мобильных устройства отправляют успешные вызовы API (вызовы запускают камеру), но на моем мобильном устройстве ничего не отображается, кроме навигационного меню в дно. В остальном приложение работает нормально, но только эта страница вызывает у меня головную боль.