2015-05-22 2 views
3

Я запускаю этот (первый) example, который запускает веб-камеру моего latop, чтобы я мог видеть себя на экране.OpenCV: обнаружение лица с использованием командной строки

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 

while(True): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 

    # Our operations on the frame come here 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

    # Display the resulting frame 
    cv2.imshow('frame',gray) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 

Я установил OpenBr на Ubuntu 14.04 LTS и я успешно this команды работать на картине себя:

br - gui -algorithm ShowFaceDetection -enrollAll -enroll /home/nakkini/Desktop/myself.png 

Вышеуказанная команда бегает на терминале отображается мое изображение и рисует квадрат вокруг моего лицо (обнаружение лица), оно также выделяет мои глаза зеленым.

Моя мечта:

Интересно, есть ли способ объединить эту команду с короткой программой выше, так что, когда веб-камера запускается, я могу видеть мое лицо в окружении зеленого прямоугольника?

Зачем мне это нужно?

Я нашел подобные программы в чистом OpenCV/Python для этого объекта. Однако для более поздних потребностей мне нужно больше вещей, чем простое распознавание лиц, и я сам сужу, что OpenBR избавит меня от многих головных болей. Вот почему я ищу способ запустить командную строку где-то внутри кода выше как первый, но большой шаг.

Подсказки:

frame в коде соответствует myself.png командной строки. Решение, которое будет найдено, попытается передать frame вместо myself.png в командную строку внутри самой программы.

спасибо, что заранее.


EDIT:

После исправления опечаток из @ решений Ксавьера У меня нет никаких ошибок. Однако программа не запускается так, как я ее хочу:

Во-первых, камера запускается, и я вижу себя, но мое лицо не обнаружено зеленым прямоугольником. Во-вторых, я нажимаю любую клавишу, чтобы выйти, но программа не выходит: она показывает мне картинку с моим лицом. В последнем нажатии клавиши существует программа. Моя цель - увидеть мое лицо, обнаруженное во время работы камеры.

+1

вы получили пространство между - и графический интерфейс, он должен, вероятно, будет: 'уш -gui ...' 'не уш - графический интерфейс ' – berak

+0

@berak приятное наблюдение, но я исправил его ранее. Спасибо –

+0

@berak вы можете увидеть мое третье редактирование, если у вас есть время. Спасибо –

ответ

2

Для этого вам не нужен openbr.

просто посмотреть python face-detect tutorial

+1

Я уже запускал аналогичные коды, используя чистые возможности OpenCV в Python. Однако я хотел бы добиться того, что я спросил. Но я очень хочу за интересную ссылку. –

1

что-то OpenCV как это должно работать

import numpy as np 
import cv2 
import os 

cap = cv2.VideoCapture(0) 

while(True): 
    # Capture frame-by-frame 
    ret, frame = cap.read() 

    # Our operations on the frame come here 
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

    # Display the resulting frame 
    cv2.imshow('frame',gray) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     cv2.imwrite("/home/nakkini/Desktop/myself.png", gray); 
     os.system('br - gui -algorithm -ShowFaceDetection -enrollAll -enroll /home/nakkini/Desktop/myself.png') 
     break 

# When everything done, release the capture 
cap.release() 
cv2.destroyAllWindows() 
+0

Большое спасибо. Когда я попробую на другой машине, я дам вам знать. Но я думаю, вы хотели написать 'imread()' вместо 'imwrite()'? –

+0

Дело в том, что 'br' ждет файл, а' cv2.imwrite() 'создает его –

+0

А, да, вы правы в этом. Я просто получаю сообщение об ошибке «система», она не распознается, но я проверю в Интернете .. я думаю, что нашел что-то вроде 'subprocess.Popen()' –

Смежные вопросы