Как использовать видеопоток DroidCam (через USB) в Python для обработки изображений с использованием OpenCV? - PullRequest
0 голосов
/ 06 января 2019

Поэтому я пытаюсь использовать свой телефон Android в качестве веб-камеры для обработки изображений в Python с использованием OpenCV. Я настроил клиент на своем ПК и могу без проблем передавать потоковое видео с телефона (через USB). Но проблема в том, что когда я пытаюсь использовать этот канал в своем коде, он выдает мне ошибку.

Вот то, что я пытаюсь выполнить.

import numpy as np    
import cv2    
cap = cv2.VideoCapture(0)     
ret, frame = cap.read()            
cap.release()    
cv2.destroyAllWindows() 

Итак, в приведенном выше коде я получаю следующую ошибку:

[ WARN:0] videoio(MSMF): can't grab frame. Error: -2147483638

Когда я пытался напечатать 'ret', это напечатало 'False'. Я не знаю, как исправить эту ошибку. Обратите внимание, что я пытаюсь транслировать через USB-кабель. Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я перепробовал все методы, которые мог, но у меня ничего не получалось. К счастью, я нашел альтернативное решение.

Те из вас, кто хочет использовать телефон Android в качестве веб-камеры (через USB) для обработки изображений, могут загрузить другое приложение из PlayStore под названием IP Webcam . Это бесплатно и не требует ПК-клиента.

Подключите телефон Android к компьютеру, а затем включите «USB-модем» на устройстве Android.

Откройте приложение, перейдите к нижней части и нажмите «Запустить сервер», чтобы начать потоковую передачу на ваш ПК.

Когда поток начнется, в нижней части экрана вашего телефона будут отображаться два IP-адреса. Чтобы получить доступ к потоку на вашем компьютере, используйте любой из двух IP-адресов, за которым следует "/video".

Конечный адрес должен выглядеть примерно так:

http://100.71.43.213:8080/video

Обратите внимание, что режим USB Tethering должен быть включен для потоковой передачи видео.

0 голосов
/ 06 января 2019

DroidCam рассматривается как IP-камера, и если он подключен через USB, вы можете использовать 127.0.0.1 (или localhost) в качестве IP-адреса. Попробуйте это:

import numpy as np
import cv2

cap = cv2.VideoCapture('http://localhost:4747/mjpegfeed')

while(True):
    ret, frame = cap.read()

    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Если это не работает, попробуйте этот урок. Вкладка «Подключение через USB (дополнительно)». https://www.dev47apps.com/droidcam/connect/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...