Я пытаюсь создать простую программу Opencv на C, которая создает захват файла из .avi и воспроизводит его в окне, выделяющем лица. Я использую скомпилированную версию Opencv (я уже пробовал то же самое с изображением в формате JPEG, и это работает).
Сборка идет хорошо, без ошибок, без предупреждения, но когда я запускаю его, консоль выводит следующее:
Обнаружен неизвестный параметр: "роль сервера"
Игнорирование неизвестного параметра «роль сервера»
И программа просто останавливается
Раньше он жаловался на отсутствующий файл /home/#user/.smb/smb.conf, поэтому я попытался установить samba (хотя я до сих пор не знаю, что во всем этом должна делать samba)
вот мой код:
Основной () {
printf("Ciao!");
cvNamedWindow("window", CV_WINDOW_AUTOSIZE);
cvWaitKey(0);
printf("ok");
CvCapture* capture = cvCreateFileCapture("monsters.avi");
CvHaarClassifierCascade* cascade = load_object_detector("haarcascade_frontalface_alt.xml");
CvMemStorage* storage = cvCreateMemStorage(0);
//List of the faces
CvSeq* faces;
while (0<10) {
CvArr* image = cvQueryFrame(capture);
double scale = 1;
faces = cvHaarDetectObjects(image,cascade, storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(1,1), cvSize(300,300));
int i;
for(i = 0; i < faces->total; i++ )
{
CvRect face_rect = *(CvRect*)cvGetSeqElem( faces, i );
cvRectangle( image,
cvPoint(face_rect.x*scale,face_rect.y*scale),
cvPoint((face_rect.x+face_rect.width)*scale,(face_rect.y+face_rect.height)*scale),
CV_RGB(255,0,0) , 3, 8, 0);
}
cvReleaseMemStorage( &storage );
cvShowImage("window", image);
}
cvWaitKey(0);
printf("Ciao!");
}
Я благодарю вас за ваш ответ, я перешел на C ++ для моих испытаний. Теперь я сделал это:
int main(){
namedWindow("Video", CV_WINDOW_FREERATIO);
VideoCapture cap("sintel.mp4");
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
for(;;){
Mat frame;
cap>>frame;
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("Video", edges);
//cvWaitKey(0);
}
return(0);
}
Теперь он успешно загружает видео и запрашивает кадр, каждый раз, когда я нажимаю клавишу, он явно запрашивает другой кадр, и все работает нормально, но если я комментирую waitkey (), программа просто немного зависает и вылетает, если я пытаюсь чтобы закрыть окно, я начинаю думать, что есть проблема с кодеками или что-то в этом роде ...