OpenCV, как я могу обнаружить веб-камеру и сравнить локальный файл, чтобы соответствовать лицу - PullRequest
1 голос
/ 21 мая 2011

Подсвеченный код демонстрирует, что в моем коде C загружена платформа openCV, и она отображает наблюдение за полицией.Это просто для демонстрации того, что для написания кода работает очень плавный и очень чистый код.

Цель: Моя webCAM подключена к порту USB.Я хотел бы получить изображение с веб-камеры в режиме реального времени и сопоставить его с локальным файлом (/tmp/myface.png). Если веб-камера с веб-камерой будет сопоставлена ​​с локальным файлом myface.png, будет отображен текст «Наблюдение за полицией»

Мои вопросы, которые нужно исправить: 1) Как я могу теперь захватить мою webCAM с помощью следующего кода?2) Когда веб-камера захвачена, как я могу загрузить файл и определить, соответствует ли он, при совпадении он показывает только этот текст.

#include "cv.h"
#include "highgui.h"

int main() 
{
    CvPoint pt   = cvPoint( 620/4, 440/2 ); // width, height
    IplImage* hw = cvCreateImage(cvSize(620, 440), 8,3);  // width, height             
    CvFont font; // cvSet(hw,cvScalar(0,0,0)); // optional
    cvInitFont (&font, CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0, 0, 1, CV_AA);
    cvPutText  (hw, "Police watching", pt, &font, CV_RGB(150, 0, 150));        
    cvShowImage("Police watching", hw);     //cvNamedWindow("Police watching", 0); // optional
    cvWaitKey  (0);
}

Примечание: Когда эта модель будет работать, я буду практиковаться в этом для преобразованияв JNI Java-модель.

Ответы [ 2 ]

2 голосов
/ 21 мая 2011

Захват видеокадра прост, просто , следуйте этому примеру . Необходимая часть:

IplImage *img = cvLoadImage( argv[1], CV_LOAD_IMAGE_COLOR );
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
while ( 1 ) {
    IplImage* frame = cvQueryFrame( capture );
    //match(img,frame);
}
cvReleaseCapture( &capture );

Вторая часть, вероятно, намного сложнее и зависит от того, что именно вы пытаетесь сделать. Если вы хотите просто сравнить изображения, вы можете использовать cvNorm . Если вы хотите распознавание лиц или распознавание лиц, вам действительно нужно знать, что вы делаете.

1 голос
/ 22 мая 2011

Вот так я получаю канал веб-камеры ... (код написан на Python, но легко переводится)

# create capture device
device = 0 # assume we want first device
capture = cv.CreateCameraCapture(0)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, 640)
cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 480)    

# check if capture device is OK
if not capture:
    print "Error opening capture device"
    sys.exit(1)

# capture the current frame
frame = cv.QueryFrame(capture)

if frame is None:
    break
    # mirror

cv.Flip(frame, None, 1)   

#Do face detection here

Я думаю, вам будет невероятно сложно сопоставить лицо из одного файла с живым видео потоком. Посмотрите в cv.HaarDetectObjects некоторые интересные алгоритмы обнаружения функций.

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