// Listing 2.10. Ten sam obiekt może ładować filmy z kamery lub pliku
// 
#include <opencv2/opencv.hpp>
#include <iostream>

void help(char** argv ) {
	std::cout << "\n"
	<< "\nListing 2.10. Ten sam obiekt może ładować filmy z kamery lub pliku"
    << "\nWywołanie:\n"  
	<< argv[0] <<" [path/image]\n"
	<< "\nlub z kamery:\n"
	<< argv[0]
	<< "\nNa przykład:\n"
	<< argv[0] << " ../tree.avi\n"
	<< std::endl;
}
	

int main( int argc, char** argv ) {
	
	help(argv);



  cv::namedWindow( "Listing 2.10", cv::WINDOW_AUTOSIZE );
  cv::VideoCapture cap;

  if (argc==1) {
    cap.open(0); // otwiera pierwszą kamerę
  } else {
    cap.open(argv[1]);
  }

  if( !cap.isOpened() ) { // sprawdza czy się udało
    std::cerr << "Nie udało się." << std::endl;
    return -1;
  }

  cv::Mat frame;

  for(;;) {

    cap >> frame;

    if( frame.empty() ) break; // Ran out of film

    cv::imshow( "Listing 2.10", frame );

    if( (char) cv::waitKey(33) >= 0 ) break;

  }

  return 0;

}
