void Vision::get_array(int faces[6][9])
{

  Mat image0;
  Mat image1;
  Mat image2;
  Mat image3;

  Mat filtered, denoised;


  {
  VideoCapture cap0(0);
  //cap0.set(CV_CAP_PROP_BRIGHTNESS, CAMERA_BRIGHTNESS);
  //cap0.set(CV_CAP_PROP_CONTRAST, CAMERA_CONTRAST);
  cap0.set(CV_CAP_PROP_SATURATION, CAMERA_SATURATION);
  //cap0.set(CV_CAP_PROP_CONTRAST, CAMERA_CONTRAST);
  /*
  cap0.set(CV_CAP_PROP_BRIGHTNESS, CAMERA_BRIGHTNESS);

  cap0.set(CV_CAP_PROP_HUE, CAMERA_HUE);
  cap0.set(CV_CAP_PROP_GAIN, CAMERA_GAIN);
  cap0.set(CV_CAP_PROP_EXPOSURE, CAMERA_EXPOSURE);
  */
  cap0 >> image0;
    //imshow("Image 0", image0);

  }


  {
  VideoCapture cap1(1);
  //cap1.set(CV_CAP_PROP_BRIGHTNESS, CAMERA_BRIGHTNESS);
  //cap1.set(CV_CAP_PROP_CONTRAST, CAMERA_CONTRAST);
  cap1.set(CV_CAP_PROP_SATURATION, CAMERA_SATURATION);
  /*
  cap1.set(CV_CAP_PROP_BRIGHTNESS, CAMERA_BRIGHTNESS);
  cap1.set(CV_CAP_PROP_CONTRAST, CAMERA_CONTRAST);
  cap1.set(CV_CAP_PROP_HUE, CAMERA_HUE);
  cap1.set(CV_CAP_PROP_GAIN, CAMERA_GAIN);
  cap1.set(CV_CAP_PROP_EXPOSURE, CAMERA_EXPOSURE);
  */
  cap1 >> image1;
  //imshow("Image 1", image1);

  }


  {

  VideoCapture cap2(2);
  cap2.set(CV_CAP_PROP_SATURATION, CAMERA_SATURATION);
  //cap2.set(CV_CAP_PROP_BRIGHTNESS, CAMERA_BRIGHTNESS);
  //cap2.set(CV_CAP_PROP_CONTRAST, CAMERA_CONTRAST);
  /*
  cap2.set(CV_CAP_PROP_HUE, CAMERA_HUE);
  cap2.set(CV_CAP_PROP_GAIN, CAMERA_GAIN);
  cap2.set(CV_CAP_PROP_EXPOSURE, CAMERA_EXPOSURE);
  */
  cap2 >> image2;
  /*imshow("Image 2", image2);
  bilateralFilter(image2, filtered, 3, 75, 75, BORDER_DEFAULT);
  imshow("Filtered", filtered);
  fastNlMeansDenoisingColored(filtered, denoised, 3, 10, 7, 21);
  imshow("Denoised", denoised);*/
  }


  {
  VideoCapture cap3(3);
  //cap3.set(CV_CAP_PROP_BRIGHTNESS, CAMERA_BRIGHTNESS);
  //cap3.set(CV_CAP_PROP_CONTRAST, CAMERA_CONTRAST);
  cap3.set(CV_CAP_PROP_SATURATION, CAMERA_SATURATION);
  /*

  cap3.set(CV_CAP_PROP_HUE, CAMERA_HUE);
  cap3.set(CV_CAP_PROP_GAIN, CAMERA_GAIN);
  cap3.set(CV_CAP_PROP_EXPOSURE, CAMERA_EXPOSURE);
  */
  cap3 >> image3;
  //imshow("Image 3", image3);
 // waitKey(1);
  }




  //all this stuff gets manually filled out
  std::cout <<"Image 0" << std::endl;
  faces[0][1] = assign_color( image0, 363, 62);
  faces[0][2] = assign_color( image0, 293, 94);
  faces[0][5] = assign_color( image0, 227, 58);
  faces[2][0] = assign_color( image0, 330, 156);
  faces[2][1] = assign_color( image0, 395, 114);
  faces[2][2] = assign_color( image0, 445, 85);
  faces[2][3] = assign_color( image0, 327, 235);
  faces[2][6] = assign_color( image0, 321, 293);
  faces[4][0] = assign_color( image0, 140, 94);
  faces[4][1] = assign_color( image0, 193, 119);
  faces[4][2] = assign_color( image0, 256, 156);
  faces[4][5] = assign_color( image0, 265, 237);
  faces[4][8] = assign_color( image0, 270, 294);
/*
  std::cout <<"Image 0 Modified" << std::endl;
  faces[0][1] = assign_color( denoised, 363, 62, 0);
  faces[0][2] = assign_color( denoised, 293, 94, 0);
  faces[0][5] = assign_color( denoised, 227, 58, 0);
  faces[2][0] = assign_color( denoised, 330, 156, 0);
  faces[2][1] = assign_color( denoised, 395, 114, 0);
  faces[2][2] = assign_color( denoised, 445, 85, 0);
  faces[2][3] = assign_color( denoised, 327, 235, 0);
  faces[2][6] = assign_color( denoised, 321, 293, 0);
  faces[4][0] = assign_color( denoised, 140, 94, 0);
  faces[4][1] = assign_color( denoised, 193, 119, 0);
  faces[4][2] = assign_color( denoised, 256, 156, 0);
  faces[4][5] = assign_color( denoised, 265, 237, 0);
  faces[4][8] = assign_color( denoised, 270, 294, 0);
*/

  std::cout << "Image 1" << std::endl;
  faces[3][0] = assign_color( image1, 313, 282 );
  faces[3][1] = assign_color( image1, 319, 227 );
  faces[3][2] = assign_color( image1, 324, 152);
  faces[3][5] = assign_color( image1, 388, 110);
  faces[3][8] = assign_color( image1, 441, 68);
  faces[4][3] = assign_color( image1, 216, 49);
  faces[4][6] = assign_color( image1, 286, 86);
  faces[4][7] = assign_color( image1, 358, 51);
  faces[5][2] = assign_color( image1, 138, 79 );
  faces[5][5] = assign_color( image1, 187, 111 );
  faces[5][6] = assign_color( image1, 259, 282 );
  faces[5][7] = assign_color( image1, 257, 226 );
  faces[5][8] = assign_color( image1, 250, 150);

  std::cout << "Image 2" << std::endl;
  faces[0][0] = assign_color( image2, 191, 13);
  faces[0][3] = assign_color( image2, 246, 47);
  faces[0][6] = assign_color( image2, 320, 81);
  faces[0][7] = assign_color( image2, 385, 45);
  faces[0][8] = assign_color( image2, 422, 19);
  faces[1][0] = assign_color( image2, 163, 73);
  faces[1][1] = assign_color( image2, 216, 111);
  faces[1][2] = assign_color( image2, 284, 149);
  faces[1][5] = assign_color( image2, 287, 224);
  faces[1][8] = assign_color( image2, 288, 278);
  faces[5][0] = assign_color( image2, 356, 148);
  faces[5][1] = assign_color( image2, 420, 103);
  faces[5][3] = assign_color( image2, 349, 224);


  std::cout << "Image 3" << std::endl;
  faces[1][3] = assign_color( image3, 219, 50);
  faces[1][6] = assign_color( image3, 291, 93 );
  faces[1][7] = assign_color( image3, 360, 51 );
  faces[2][5] = assign_color( image3, 182, 109 );
  faces[2][7] = assign_color( image3, 249, 228 );
  faces[2][8] = assign_color( image3, 252, 155 );
  faces[3][3] = assign_color( image3, 385, 109 );
  faces[3][6] = assign_color( image3, 324, 151 );
  faces[3][7] = assign_color( image3, 313, 227 );


  for (int v = 0; v < 6; v++)
  {
      faces[v][4] = v;
  }
 /*
  for (int d = 0; d < 6; d++)
  {
      for (int o = 0; o < 9; o++)
      {
          sum[ faces[d][o] ] += 1;
      }
  }


  for (int h = 0; h < 6; h++)
  {
      if (sum[h] != 9)
      {
            //std::cerr << "Color reading error..." << std::endl;
      }
  }
  */


}
Example #2
0
int main(int argc, char * argv[])
{
	setlocale(LC_ALL, "Russian");
	OpticalFlowMatrices of_matr;
	CameraParams cp;
	char command;
	int number_of_cams;
	puts("Проверка камер");
	presets_aiming();

	printf("Нужна ли калибровка? (y//n): ");
	scanf("%c", &command);
	bool calibration_needed = command == 'y';

	printf("Введите число камер (1//2): ");
	scanf("%d", &number_of_cams);

	if (number_of_cams == 1)
	{
		if (calibration_needed)
		{
			//Проводим калибровку и записываем результаты в файл
			int board_width, board_height;
			puts("Введите размеры шахматной доски (число углов)");
			printf("Ширина: "); scanf("%d", &board_width);
			printf("Высота: "); scanf("%d", &board_height);

			Size board_sz(board_width, board_height);
			cp = camera_calibration(board_sz);

			write_camera_calibration_to_file(cp);
		}
		else
		{ //Читаем калибровку из файла
			read_camera_calibration_from_file(cp);
		}

		//Алгоритм оптического потока
		//Делаем фото с камер
		VideoCapture cap(0);

		Mat img0, img1;
		single_camera_aiming(cap);
		cap.read(img0);
		printf("Передвиньте камеру и нажмите любую клавишу");
		single_camera_aiming(cap);
		cap.read(img1);

		//Находим оптический поток и строим облако точек
		Mat point_cloud = single_sfm(img0, img1, cp.CM, cp.D);

		//Сохраняем результаты в файл
		save_3d_to_file("[1]point_cloud.obj", point_cloud, "w");
	}

	else if (number_of_cams == 2)
	{
		if (calibration_needed)
		{
			//Проводим калибровку и записываем результаты в файл
			int board_width, board_height;
			puts("Введите размеры шахматной доски (число углов)");
			printf("Ширина: "); scanf("%d", &board_width);
			printf("Высота: "); scanf("%d", &board_height);

			Size board_sz(board_width, board_height);
			of_matr = stereo_calibration(board_sz);

			write_stereo_calibration_to_file(of_matr);
		}
		else
		{ //Читаем калибровку из файла
			read_stereo_calibration_from_file(of_matr);
		}

		//Алгоритм оптического потока
		//Делаем фото с камер
		VideoCapture cap0(0);
		VideoCapture cap1(1);

		Mat img0, img1;
		aiming(cap0, cap1);
		cap0.read(img0);
		cap1.read(img1);


		//Находим оптический поток и строим облако точек
		Mat point_cloud = stereo_sfm(img0, img1, of_matr);

		//Сохраняем результаты в файл
		save_3d_to_file("[2]point_cloud.obj", point_cloud, "w");
	}


	return 0;
}